UNPKG

@wroud/vite-plugin-ssg

Version:

A Vite plugin for static site generation (SSG) with React. Renders React applications to static HTML for faster load times and improved SEO.

54 lines 2.43 kB
import { getPathsToLookup } from "../utils/getPathsToLookup.js"; import { isSsgComponentId, removeSsgComponentQuery, } from "../modules/isSsgComponentId.js"; export function ssgComponentResolution() { return { name: "@wroud/vite-plugin-ssg:component-resolution", resolveId: { async handler(source, importer, resolveOptions) { if (!isSsgComponentId(source) || source.includes("\0")) return null; const config = this.environment.config; const { custom = {} } = resolveOptions; const { "@wroud/vite-plugin-ssg:component-resolution": ssgResolve = {}, } = custom; const { resolved: alreadyResolved } = ssgResolve; if (alreadyResolved) { return alreadyResolved; } if (importer && importer.includes("\0")) { importer = undefined; } let [sourcePath, params] = removeSsgComponentQuery(source).split("?"); const suffix = params ? `?${params}` : ""; const lookUpPaths = getPathsToLookup(sourcePath); for (const path of lookUpPaths) { if (path === config.root) { break; } const resolvedId = path + suffix; const resolvedResolved = await this.resolve(resolvedId, importer, { ...resolveOptions, skipSelf: true, custom: { ...custom, "@wroud/vite-plugin-ssg:component-resolution": { ...ssgResolve, resolved: resolvedId, }, }, }); if (resolvedResolved) { if (resolvedResolved.external) { return false; } if (resolvedResolved.id !== resolvedId) { return resolvedResolved; } return { id: resolvedId, meta: resolvedResolved.meta }; } } return null; }, }, }; } //# sourceMappingURL=ssgComponentResolution.js.map