56 lines
1.9 KiB
JavaScript
56 lines
1.9 KiB
JavaScript
import { createReadStream, createWriteStream } from "node:fs";
|
|
import { mkdir, readdir, writeFile } from "node:fs/promises";
|
|
import { dirname, resolve } from "node:path";
|
|
import { pipeline } from "node:stream/promises";
|
|
import { fileURLToPath } from "node:url";
|
|
import { build } from "esbuild";
|
|
import locales from "../locales/index.js";
|
|
import meta from "../package.json" with { type: "json" };
|
|
|
|
const root = resolve(dirname(fileURLToPath(import.meta.url)), "..");
|
|
const viewsSrc = resolve(root, "packages/backend/src/server/web/views");
|
|
const viewsOut = resolve(root, "packages/backend/built/server/web/views");
|
|
|
|
await mkdir(viewsOut, { recursive: true });
|
|
await mkdir(resolve(root, "built/_client_dist_/locales"), { recursive: true });
|
|
|
|
const localeVersion = { _version_: meta.version };
|
|
for (const [lang, locale] of Object.entries(locales)) {
|
|
await writeFile(
|
|
resolve(root, `built/_client_dist_/locales/${lang}.${meta.version}.json`),
|
|
JSON.stringify({ ...locale, ...localeVersion }),
|
|
"utf-8",
|
|
);
|
|
}
|
|
|
|
for (const entry of await readdir(viewsSrc, { withFileTypes: true })) {
|
|
if (!entry.isFile()) continue;
|
|
await pipeline(
|
|
createReadStream(resolve(viewsSrc, entry.name)),
|
|
createWriteStream(resolve(viewsOut, entry.name)),
|
|
);
|
|
}
|
|
|
|
await build({
|
|
entryPoints: [
|
|
resolve(root, "packages/backend/src/server/web/boot.js"),
|
|
resolve(root, "packages/backend/src/server/web/bios.js"),
|
|
resolve(root, "packages/backend/src/server/web/cli.js"),
|
|
],
|
|
outdir: resolve(root, "packages/backend/built/server/web"),
|
|
define: {
|
|
LANGS: JSON.stringify(Object.keys(locales)),
|
|
},
|
|
minify: true,
|
|
});
|
|
|
|
await build({
|
|
entryPoints: [
|
|
resolve(root, "packages/backend/src/server/web/style.css"),
|
|
resolve(root, "packages/backend/src/server/web/bios.css"),
|
|
resolve(root, "packages/backend/src/server/web/cli.css"),
|
|
],
|
|
outdir: resolve(root, "packages/backend/built/server/web"),
|
|
minify: true,
|
|
});
|