Skip to content

Instantly share code, notes, and snippets.

@NullVoxPopuli
Created May 24, 2024 15:23
Show Gist options
  • Save NullVoxPopuli/36b8c6a07adbd7ba8d3734be7031dd24 to your computer and use it in GitHub Desktop.
Save NullVoxPopuli/36b8c6a07adbd7ba8d3734be7031dd24 to your computer and use it in GitHub Desktop.
min + gzip + brotli testing script
import fs from 'node:fs';
import path from 'node:path';
import { filesize } from 'filesize';
import { minify } from 'terser';
import { execa, execaCommand, $ } from 'execa';
import brotli from 'brotli';
const options = {
parse: {
html5_comments: false,
},
compress: true,
output: {
ecma: 2022,
comments: false,
},
};
const getSize = (file) => {
const {size} = fs.statSync(file)
return filesize(size)
}
const files = fs.globSync(path.join(process.cwd(), '/**/*.js'))
for (let file of files) {
console.log(`Minifying ${file} (${getSize(file)})`)
const terserResult = await minify(fs.readFileSync(file, 'utf8'), options)
if (terserResult.error) {
throw terserResult.error;
}
let min = `${file}.min`;
let gz = `${min}.gz`;
let br = `${min}.br`;
fs.writeFileSync(min, terserResult.code, 'utf8');
await execa({stdout: {file: gz}})`gzip -c ${min}`;
fs.writeFileSync(br, brotli.compress(terserResult.code), 'utf8');
}
/**
* See sizes via:
* ❯ du --depth 1 --reverse --apparent-size --no-percent-bars --filter ".js$" ember-composable-helpers/dist/
* ❯ du --depth 1 --reverse --apparent-size --no-percent-bars --filter ".min$" ember-composable-helpers/dist/
* ❯ du --depth 1 --reverse --apparent-size --no-percent-bars --filter ".gz$" ember-composable-helpers/dist/
* ❯ du --depth 1 --reverse --apparent-size --no-percent-bars --filter ".br$" ember-composable-helpers/dist/
*
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment