#!/usr/bin/env node /** * Build all frontend assets: CSS + JS. * * Usage: * node scripts/build.mjs # build everything * node scripts/build.mjs --css # CSS only * node scripts/build.mjs --js # JS only * * Requires: npm install (lightningcss-cli, rolldown) */ import { execSync } from "node:child_process"; import { existsSync } from "node:fs"; import { resolve, dirname } from "node:path"; import { fileURLToPath } from "node:url"; const __dirname = dirname(fileURLToPath(import.meta.url)); const root = resolve(__dirname, ".."); const args = process.argv.slice(2); const onlyCss = args.includes("--css"); const onlyJs = args.includes("--js"); const buildAll = !onlyCss && !onlyJs; function run(label, cmd) { console.log(`\nšŸ“¦ ${label}…`); execSync(cmd, { cwd: root, stdio: "inherit", }); } // Ensure node_modules exist if (!existsSync(resolve(root, "node_modules"))) { console.log("šŸ“„ Installing dependencies (npm ci)…"); execSync("npm ci", { cwd: root, stdio: "inherit" }); } if (buildAll || onlyCss) { run("Building CSS bundles", "node scripts/build-css.mjs"); } if (buildAll || onlyJs) { run("Building JS bundles", "node scripts/build-js.mjs"); } console.log("\nāœ… Build complete\n");