19 lines
710 B
JavaScript
19 lines
710 B
JavaScript
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(", ")}`);
|
|
}
|