server/packages/api/build.ts

50 lines
1.4 KiB
TypeScript
Raw Normal View History

import { readdir } from "node:fs/promises";
2025-05-01 16:27:34 +02:00
import { $, build } from "bun";
import manifest from "./package.json" with { type: "json" };
import { routes } from "./routes.ts";
2024-03-12 19:27:50 +01:00
2025-05-01 16:27:34 +02:00
console.log("Building...");
2024-04-09 13:14:53 +02:00
await $`rm -rf dist && mkdir dist`;
2023-12-09 03:59:02 +01:00
// Get all directories under the plugins/ directory
const pluginDirs = await readdir("plugins", { withFileTypes: true });
await build({
2024-04-07 07:30:49 +02:00
entrypoints: [
...Object.values(manifest.exports).map((entry) => entry.import),
2024-04-07 07:30:49 +02:00
// Force Bun to include endpoints
...Object.values(routes),
// Include all plugins
...pluginDirs
.filter((dir) => dir.isDirectory())
.map((dir) => `plugins/${dir.name}/index.ts`),
2024-04-07 07:30:49 +02:00
],
outdir: "dist",
2024-04-07 07:30:49 +02:00
target: "bun",
splitting: true,
minify: true,
external: [
...Object.keys(manifest.dependencies).filter((dep) =>
dep.startsWith("@versia"),
),
"@bull-board/ui",
// Excluded because Standard Schema imports those, but the code is never executed
"@valibot/to-json-schema",
"effect"
],
});
2025-05-01 16:27:34 +02:00
console.log("Copying files...");
// Copy plugin manifests
await $`cp plugins/openid/manifest.json dist/plugins/openid/manifest.json`;
await $`mkdir -p dist/node_modules`;
// Copy bull-board to dist
await $`mkdir -p dist/node_modules/@bull-board`;
await $`cp -rL ../../node_modules/@bull-board/ui dist/node_modules/@bull-board/ui`;
2025-05-01 16:27:34 +02:00
console.log("Build complete!");