@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.
44 lines • 1.6 kB
JavaScript
import { isVirtualHtmlEntry } from "../modules/isVirtualHtmlEntry.js";
export function htmlVirtualEntryResolution() {
// Cast the return value to include our custom properties
const plugin = {
name: "@wroud/vite-plugin-ssg:html-virtual-entry-resolution",
virtualHtmlChunks: undefined,
enforce: "post",
apply: "build",
applyToEnvironment: (env) => env.name === "client",
resolveId: {
order: "pre",
handler(source) {
if (isVirtualHtmlEntry(source)) {
return { id: source, moduleSideEffects: true };
}
return undefined;
},
},
load: {
order: "pre",
handler(id) {
if (isVirtualHtmlEntry(id)) {
return "";
}
return undefined;
},
},
generateBundle: {
order: "post",
handler(options, bundle) {
// Extract virtual HTML chunks
const virtualChunks = new Map(Object.entries(bundle).filter(([, chunk]) => chunk.fileName && isVirtualHtmlEntry(chunk.fileName)));
// Remove virtual chunks from bundle
for (const [key] of virtualChunks) {
delete bundle[key];
}
// Store the virtualChunks in our typed plugin object
plugin.virtualHtmlChunks = virtualChunks;
},
},
};
return plugin;
}
//# sourceMappingURL=htmlVirtualEntryResolution.js.map