import { mkdir, cp, rm } from "fs/promises"; import { join } from "path"; import { renderIndex } from "./src/index"; import { renderLogin } from "./src/login"; import { renderKostenrechner } from "./src/kostenrechner"; import { renderFristenrechner } from "./src/fristenrechner"; import { renderDownloads } from "./src/downloads"; import { renderLinks } from "./src/links"; import { renderGlossar } from "./src/glossar"; const DIST = join(import.meta.dir, "dist"); async function build() { // Clean dist/ await rm(DIST, { recursive: true, force: true }); await mkdir(join(DIST, "assets"), { recursive: true }); // Bundle client-side JS const result = await Bun.build({ entrypoints: [ join(import.meta.dir, "src/client/index.ts"), join(import.meta.dir, "src/client/login.ts"), join(import.meta.dir, "src/client/kostenrechner.ts"), join(import.meta.dir, "src/client/fristenrechner.ts"), join(import.meta.dir, "src/client/downloads.ts"), join(import.meta.dir, "src/client/links.ts"), join(import.meta.dir, "src/client/glossar.ts"), ], outdir: join(DIST, "assets"), naming: "[name].js", minify: true, }); if (!result.success) { console.error("JS build failed:"); for (const log of result.logs) { console.error(log); } process.exit(1); } // Copy CSS await cp( join(import.meta.dir, "src/styles/global.css"), join(DIST, "assets/global.css"), ); // Render HTML pages await Bun.write(join(DIST, "index.html"), renderIndex()); await Bun.write(join(DIST, "login.html"), renderLogin("login.js")); await Bun.write(join(DIST, "kostenrechner.html"), renderKostenrechner()); await Bun.write(join(DIST, "fristenrechner.html"), renderFristenrechner()); await Bun.write(join(DIST, "downloads.html"), renderDownloads()); await Bun.write(join(DIST, "links.html"), renderLinks()); await Bun.write(join(DIST, "glossar.html"), renderGlossar()); console.log("Build complete \u2192 dist/"); } build();