Webpack plugin and CLI utility that represents bundle content as convenient interactive zoomable treemap
Just take a look at this demo:
This module will help you:
And the best thing is it supports minified bundles! It parses them to get real size of bundled modules. And it also shows their gzipped sizes!
There are two ways to use this module:
npm install --save-dev webpack-bundle-analyzer
var BundleAnalyzerPlugin = BundleAnalyzerPlugin;// ...plugins:// ...
BundleAnalyzerPlugin constructor can take an optional configuration object that defaults to this:
// Can be `server`, `static` or `disabled`.// In `server` mode analyzer will start HTTP server to show bundle report.// In `static` mode single HTML file with bundle report will be generated.// In `disabled` mode you can use this plugin to just generate Webpack Stats JSON file by setting `generateStatsFile` to `true`.analyzerMode: 'server'// Host that will be used in `server` mode to start HTTP server.analyzerHost: '127.0.0.1'// Port that will be used in `server` mode to start HTTP server.analyzerPort: 8888// Path to bundle report file that will be generated in `static` mode.// Relative to bundles output directory.reportFilename: 'report.html'// Module sizes to show in report by default.// Should be one of `stat`, `parsed` or `gzip`.// See "Definitions" section for more information.defaultSizes: 'parsed'// Automatically open report in default browseropenAnalyzer: true// If `true`, Webpack Stats JSON file will be generated in bundles output directorygenerateStatsFile: false// Name of Webpack Stats JSON file that will be generated if `generateStatsFile` is `true`.// Relative to bundles output directory.statsFilename: 'stats.json'// Options for `stats.toJson()` method.// For example you can exclude sources of your modules from stats file with `source: false` option.// See more options here:statsOptions: null// Log level. Can be 'info', 'warn', 'error' or 'silent'.logLevel: 'info'
You can also analyze already existing bundles if you have Webpack Stats JSON file.
You can generate it using
generateStatsFile option set to
true or with this simple
webpack --profile --json > stats.json
If you're on Windows and using PowerShell, you can generate the stats file with this command to avoid BOM issues:
webpack --profile --json | Out-file 'stats.json' -Encoding OEM
webpack-bundle-analyzer --help will show you all usage information.
webpack-bundle-analyzer reports three values:
This is the "input" size of your files, before any transformations like minification.
It is called "stat size" because it's obtained from Webpack's stats object.
This is the "output" size of your files. If you're using a Webpack plugin such as Uglify, then this value will reflect the minified size of your code.
This is the size of running the file(s) through gzip compression. Note that the value listed for the entire bundle is correct, but it will be slightly off if you look at the gzip value for individual files.
This is because of the way gzip works: the more files that are gzipped together, the more opportunities there are for things to be compressed. Accordingly, the gzip value reported for each individual file will be slightly larger than the actual contribution that the file makes to the overall gzipped bundle.
Check out CONTRIBUTING.md for instructions on contributing 🎉