sanity
Version:
Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches
35 lines (31 loc) • 1.15 kB
text/typescript
import {type AliasOptions} from 'vite'
import {getSanityPkgExportAliases} from './getBrowserAliases'
import {getMonorepoAliases} from './sanityMonorepo'
/**
* @internal
*/
export interface GetAliasesOptions {
/** An optional monorepo path. */
monorepoPath?: string
/** The path to the sanity package.json file. */
sanityPkgPath: string
}
/**
* Returns an object of aliases for Vite to use.
*
* This function is used within our build tooling to prevent multiple context errors
* due to multiple instances of our library. It resolves the appropriate paths for
* modules based on whether the current project is inside the Sanity monorepo or not.
*
* If the project is within the monorepo, it uses the source files directly for a better
* development experience. Otherwise, it uses the `sanityPkgPath` and `conditions` to locate
* the entry points for each subpath of the Sanity module exports.
*
* @internal
*/
export async function getAliases({
monorepoPath,
sanityPkgPath,
}: GetAliasesOptions): Promise<AliasOptions> {
return monorepoPath ? getMonorepoAliases(monorepoPath) : getSanityPkgExportAliases(sanityPkgPath)
}