marko/packages/runtime/esbuild.ts
2023-01-20 12:02:26 -05:00

43 lines
1.2 KiB
TypeScript

import fs from "fs";
import path from "path";
import esbuild from "esbuild";
Promise.all(
["dist/debug", "dist"].flatMap((env) =>
["dom", "html"].flatMap((name) => {
(["esm", "cjs"] as const).map(async (format) => {
const result = await esbuild.build({
bundle: true,
entryPoints: [`src/${name}/index.ts`],
metafile: true,
outfile: `${env}/${name}/index.${format}.js`,
format,
define:
env === "dist" ? { MARKO_DEBUG: "false" } : { MARKO_DEBUG: "true" },
minifySyntax: env === "dist",
mangleProps: env === "dist" ? /^___/ : undefined,
sourcemap: true,
});
const pkgDir = `${env}/${name}`;
await fs.promises.writeFile(
`${pkgDir}/meta.${format}.json`,
JSON.stringify(result.metafile)
);
await fs.promises.writeFile(
`${pkgDir}/package.json`,
JSON.stringify(
{
main: "index.cjs.js",
jsnext: "index.esm.js",
module: "index.esm.js",
types: path.relative(pkgDir, `dist/${name}/index.d.ts`),
},
null,
2
)
);
});
})
)
).catch(console.error);