M44: harden release integrity and assurance
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
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(", ")}`);
|
||||
}
|
||||
Reference in New Issue
Block a user