import { readdir, stat } from "node:fs/promises"; import { join } from "node:path"; const limits = { ".js": 400 * 1024, ".css": 180 * 1024 }; const assets = join(import.meta.dirname, "..", "frontend", "dist", "assets"); const failures = []; for (const name of await readdir(assets)) { const extension = Object.keys(limits).find((candidate) => name.endsWith(candidate)); if (!extension) continue; const bytes = (await stat(join(assets, name))).size; console.log(`${name}: ${(bytes / 1024).toFixed(1)} KiB / ${limits[extension] / 1024} KiB`); if (bytes > limits[extension]) failures.push(name); } if (failures.length) { throw new Error(`Frontend asset budget exceeded: ${failures.join(", ")}`); }