Files
blitzkit/packages/scripts/src/buildBot.ts
T
2025-10-12 17:17:05 +00:00

59 lines
1.5 KiB
TypeScript

import { build } from "esbuild";
import { cp, readdir, rm } from "fs/promises";
import { argv } from "process";
const projectDir = "../..";
const srcRoot = `${projectDir}/packages/bot`;
const distRoot = `${projectDir}/dist/bot`;
const modulesRoot = `${projectDir}/packages/bot/node_modules`;
const workers = await readdir(`${srcRoot}/src/workers`);
const dev = argv.includes("--dev");
await rm(distRoot, { recursive: true, force: true });
build({
entryPoints: [
`${srcRoot}/src/main.ts`,
...workers.map((worker) => `${srcRoot}/src/workers/${worker}`),
],
bundle: true,
outdir: "../../dist/bot",
platform: "node",
format: "esm",
loader: {
".ttf": "file",
".node": "empty",
".json": "json",
},
external: ["sharp"],
minifyIdentifiers: false, // causes goofy ahh issues
minifySyntax: !dev,
minifyWhitespace: !dev,
sourcemap: !dev,
jsxImportSource: "react",
jsx: "automatic",
});
for (const module of await readdir(`${modulesRoot}/@resvg`)) {
readdir(`${modulesRoot}/@resvg/${module}`).then((files) =>
files
.filter((file) => file.endsWith(".node"))
.map((file) =>
cp(
`${modulesRoot}/@resvg/${module}/${file}`,
`${distRoot}/workers/${file}`
)
)
);
}
if (!dev) {
await cp(`${projectDir}/prisma`, `${distRoot}/prisma`, { recursive: true });
for (const file of await readdir(`${modulesRoot}/prisma`).then((files) =>
files.filter((file) => file.endsWith(".node"))
)) {
cp(`${modulesRoot}/prisma/${file}`, `${distRoot}/prisma/${file}`);
}
}