chore: minify json files (@fehmer) (#6404)

This commit is contained in:
Christian Fehmer 2025-03-26 15:06:01 +01:00 committed by GitHub
parent b1d75fb077
commit d181406e31
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -10,6 +10,7 @@ import { checker } from "vite-plugin-checker";
import { writeFileSync } from "fs";
// eslint-disable-next-line import/no-unresolved
import UnpluginInjectPreload from "unplugin-inject-preload/vite";
import { readdirSync, readFileSync, statSync } from "node:fs";
function pad(numbers, maxLength, fillString) {
return numbers.map((number) =>
@ -169,6 +170,69 @@ export default {
],
injectTo: "head-prepend",
}),
{
name: "minify-json",
apply: "build",
generateBundle() {
let totalOriginalSize = 0;
let totalMinifiedSize = 0;
const minifyJsonFiles = (dir) => {
readdirSync(dir).forEach((file) => {
const sourcePath = path.join(dir, file);
const stat = statSync(sourcePath);
if (stat.isDirectory()) {
minifyJsonFiles(sourcePath);
} else if (path.extname(file) === ".json") {
const originalContent = readFileSync(sourcePath, "utf8");
const originalSize = Buffer.byteLength(originalContent, "utf8");
const minifiedContent = JSON.stringify(
JSON.parse(originalContent)
);
const minifiedSize = Buffer.byteLength(minifiedContent, "utf8");
totalOriginalSize += originalSize;
totalMinifiedSize += minifiedSize;
const savings =
((originalSize - minifiedSize) / originalSize) * 100;
writeFileSync(sourcePath, minifiedContent);
console.log(
`\x1b[0m \x1b[36m${sourcePath}\x1b[0m | ` +
`\x1b[90mOriginal: ${originalSize} bytes\x1b[0m | ` +
`\x1b[90mMinified: ${minifiedSize} bytes\x1b[0m | ` +
`\x1b[32mSavings: ${savings.toFixed(2)}%\x1b[0m`
);
}
});
};
console.log("\n\x1b[1mMinifying JSON files...\x1b[0m\n");
minifyJsonFiles("./dist");
const totalSavings =
((totalOriginalSize - totalMinifiedSize) / totalOriginalSize) * 100;
console.log(
`\n\x1b[1mMinification Summary:\x1b[0m\n` +
` \x1b[90mTotal original size: ${(
totalOriginalSize /
1024 /
1024
).toFixed(2)} mB\x1b[0m\n` +
` \x1b[90mTotal minified size: ${(
totalMinifiedSize /
1024 /
1024
).toFixed(2)} mB\x1b[0m\n` +
` \x1b[32mTotal savings: ${totalSavings.toFixed(2)}%\x1b[0m\n`
);
},
},
],
build: {
emptyOutDir: true,