72 lines
2.3 KiB
Plaintext
72 lines
2.3 KiB
Plaintext
import { normalizeEntryId } from "./plugin-component-entry.js";
|
|
function vitePluginInternals(input, internals) {
|
|
return {
|
|
name: "@astro/plugin-build-internals",
|
|
config(config, options) {
|
|
if (options.command === "build" && config.build?.ssr) {
|
|
return {
|
|
ssr: {
|
|
// Always bundle Astro runtime when building for SSR
|
|
noExternal: ["astro"],
|
|
// Except for these packages as they're not bundle-friendly. Users with strict package installations
|
|
// need to manually install these themselves if they use the related features.
|
|
external: [
|
|
"sharp"
|
|
// For sharp image service
|
|
]
|
|
}
|
|
};
|
|
}
|
|
},
|
|
async generateBundle(_options, bundle) {
|
|
const promises = [];
|
|
const mapping = /* @__PURE__ */ new Map();
|
|
for (const specifier of input) {
|
|
promises.push(
|
|
this.resolve(specifier).then((result) => {
|
|
if (result) {
|
|
if (mapping.has(result.id)) {
|
|
mapping.get(result.id).add(specifier);
|
|
} else {
|
|
mapping.set(result.id, /* @__PURE__ */ new Set([specifier]));
|
|
}
|
|
}
|
|
})
|
|
);
|
|
}
|
|
await Promise.all(promises);
|
|
for (const [, chunk] of Object.entries(bundle)) {
|
|
if (chunk.type === "chunk" && chunk.facadeModuleId) {
|
|
const specifiers = mapping.get(chunk.facadeModuleId) || /* @__PURE__ */ new Set([chunk.facadeModuleId]);
|
|
for (const specifier of specifiers) {
|
|
internals.entrySpecifierToBundleMap.set(normalizeEntryId(specifier), chunk.fileName);
|
|
}
|
|
} else if (chunk.type === "chunk") {
|
|
for (const id of Object.keys(chunk.modules)) {
|
|
const pageData = internals.pagesByViteID.get(id);
|
|
if (pageData) {
|
|
internals.pageToBundleMap.set(pageData.moduleSpecifier, chunk.fileName);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
}
|
|
function pluginInternals(internals) {
|
|
return {
|
|
targets: ["client", "server"],
|
|
hooks: {
|
|
"build:before": ({ input }) => {
|
|
return {
|
|
vitePlugin: vitePluginInternals(input, internals)
|
|
};
|
|
}
|
|
}
|
|
};
|
|
}
|
|
export {
|
|
pluginInternals,
|
|
vitePluginInternals
|
|
};
|