31 lines
1000 B
JavaScript
31 lines
1000 B
JavaScript
const { readFileSync, writeFileSync } = require('node:fs');
|
|
const fg = require('fast-glob');
|
|
const prettyBytes = require('./prettyBytes.cjs');
|
|
|
|
let brotliWasm;
|
|
|
|
(() => {
|
|
brotliWasm = require('brotli-wasm');
|
|
})();
|
|
|
|
const { compress } = brotliWasm;
|
|
|
|
((
|
|
/** @type {string} */
|
|
globPattern
|
|
) => {
|
|
console.warn('Warning: If you provide more than two glob patterns as arguments');
|
|
console.warn('it will only compress the first glob pattern due to performance');
|
|
console.warn('reasons. You can change this behavior by modifying the');
|
|
console.warn('function calling at the end of the script.');
|
|
|
|
for (const file of fg.globSync(globPattern)) {
|
|
const compressedFile = compress(readFileSync(file), {
|
|
quality: 11,
|
|
});
|
|
|
|
console.log(`Compressed ${file} from ${prettyBytes(readFileSync(file).length)} to ${prettyBytes(compressedFile.length)}`);
|
|
|
|
writeFileSync(file, compressedFile);
|
|
}
|
|
})(process.argv[2]); |