astro
Version:
Astro is a modern site builder with web best practices, performance, and DX front-of-mind.
28 lines (25 loc) • 812 B
JavaScript
import { fileURLToPath } from "node:url";
import { build } from "esbuild";
async function buildClientDirectiveEntrypoint(name, entrypoint, root) {
const stringifiedName = JSON.stringify(name);
const stringifiedEntrypoint = JSON.stringify(entrypoint);
const output = await build({
stdin: {
contents: `import directive from ${stringifiedEntrypoint};
(self.Astro || (self.Astro = {}))[${stringifiedName}] = directive;
window.dispatchEvent(new Event('astro:' + ${stringifiedName}));`,
resolveDir: fileURLToPath(root)
},
absWorkingDir: fileURLToPath(root),
format: "iife",
minify: true,
bundle: true,
write: false
});
const outputFile = output.outputFiles?.[0];
if (!outputFile) return "";
return outputFile.text;
}
export {
buildClientDirectiveEntrypoint
};