Skip to content

Instantly share code, notes, and snippets.

@developit
Last active April 19, 2019 18:23
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save developit/59ac02a289abb78d3c186d7c9b9219ea to your computer and use it in GitHub Desktop.
Save developit/59ac02a289abb78d3c186d7c9b9219ea to your computer and use it in GitHub Desktop.
npx webpack-size foo.js → https://npm.im/webpack-size

webpack-size

Weigh current module:

npx webpack-size

Weigh the size of a specific module entry:

npx webpack-size foo.js
node_modules
package-lock.json
readme.md
{
"name": "webpack-size",
"version": "0.1.0",
"main": "./webpack-size.js",
"bin": "./webpack-size.js",
"scripts": {
"prepare": "cp *webpack-size.md readme.md"
},
"repository": "gist:59ac02a289abb78d3c186d7c9b9219ea",
"dependencies": {
"rollup": "^1",
"rollup-plugin-node-resolve": "^4",
"rollup-plugin-commonjs": "^9",
"rollup-plugin-terser": "^4",
"gzip-size": "^5"
}
}
#! /usr/bin/env node
var file = process.argv[2];
if (!file) {
var pkg = require(require('path').join(process.cwd(), 'package.json'));
file = pkg.module || pkg.browser || pkg.main;
}
require('rollup').rollup({
input: file,
plugins: [
require('rollup-plugin-node-resolve')({
mainFields: ['syntax.esmodules', 'module', 'main']
}),
require('rollup-plugin-commonjs')(),
require('rollup-plugin-terser').terser({
sourcemap: false,
compress: true,
mangle: true
})
]
})
.then(function(bundle) {
return bundle.generate({ format: 'cjs' });
})
.then(function(result) {
console.log(file + ' weighs ' + require('gzip-size').sync(result.output[0].code) + ' (gzipped) when webpacked.');
})
.catch(function(err) {
console.error('Failed to process ' + file + ': ' + (err && err.message || err));
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment