astro-ghostcms/.pnpm-store/v3/files/50/aca5e1ada41781bf9af84216cfe...

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
};