Demos: Bundle analysis comparison · Bundle analysis
BundleStats webpack pluginAnalyze bundle stats(bundle size, assets, modules, packages) and compare the results between different builds. Support for webpack, rspack, vite, rollup and rolldown.
- Bundle size and totals by file type(css, js, img, etc)
- Insights: duplicate packages, new packages
- Initial JS/CSS, Cache invalidation, and other bundle metrics
- Assets report (entrypoint, initial, types, changed, delta)
- Modules report (changed, delta, chunks, duplicate count and percentage)
- Packages report (count, duplicate, changed, delta)
â Side by side comparison for multiple builds
npm install --dev bundle-stats-webpack-plugin
or
yarn add --dev bundle-stats-webpack-plugin
// webpack.config.js const { BundleStatsWebpackPlugin } = require('bundle-stats-webpack-plugin'); module.exports = { ..., plugins: [ new BundleStatsWebpackPlugin() ] }
BundleStatsWebpackPlugin(options)
compare
- use local saved baseline for comparison (default true
).baseline
- save current webpack stats as baseline (default false
).html
- output html report (default true
).json
- output json report (default false
).outDir
- output directory relative to webpack output.path
(default ''
).baselineFilepath
- baseline filepath relative to webpack output.path
(default 'node_modules/.cache/bundle-stats/baseline.json')silent
- stop logging info and only log warning and error (default false
).stats
- Webpack stats options default:
// webpack.config.js module.exports = { // ... stats: { assets: true, chunks: true, modules: true, builtAt: true, hash: true, }, };
How to configure webpack for better debugging and monitoring
How to exclude virtual modulesSome plugins use virtual modules as an intermediary step when generating JS modules. For example, vanilla-extract creates a virtual module for every .css.js
/css.ts
file based on the loader module path and the filename/source as query parameters:
./node_modules/@vanilla-extract/webpack-plugin/vanilla.virtual.css?%7B%22fileName%22%3A%22src%2Fcomponents%2Fcomponent%2Fcomponent.css.ts.vanilla.css%22%2C%22source%22%3A%22...%22%7D
Inlining the encoded source and the filename causes an increase in the size of the output stats and adds unnecessary entries to the stats. To ignore vanilla-extract virtual modules from the stats and from the bundle analysis report, use excludeModules
option:
// webpack.config.js module.exports = { // ... stats: { excludeModules: [ /@vanilla-extract\/webpack-plugin\/vanilla-virtual\.css/, ], }, };Use with create-react-app
You will need to customize the default webpack config. That can be done by using react-app-rewired which is one of create-react-app's custom config solutions. You will also need customize-cra.
npm install --dev customize-cra react-app-rewired
or
yarn add customize-cra react-app-rewired --dev
Change your default scripts in package.json
to:
/* package.json */ "scripts": { "start": "react-app-rewired start", "build": "react-app-rewired build", "test": "react-app-rewired test" }
Create a file config-overrides.js
at the same level as package.json
.
// config-overrides.js const { override, addWebpackPlugin } = require('customize-cra'); const { BundleStatsWebpackPlugin } = require('bundle-stats-webpack-plugin'); module.exports = override( addWebpackPlugin(new BundleStatsWebpackPlugin()), );
In compare
mode, the metrics are compared against an existing(node_modules/.cache/bundle-stats/baseline.json
) Webpack stats file(baseline). To generate the baseline webpack stats, set BUNDLE_STATS_BASELINE
environmental variable to true
or set BundleStatsWebpackPlugin
baseline
option to true
:
# Checkout to the branch/tag/commit where you want to generate the baseline $ git checkout master # Build your application with BUNDLE_STATS_BASELINE environmental variable $ BUNDLE_STATS_BASELINE=true npm run build # Checkout to the working branch/tag/commit $ git checkout MY_FEATURE_BRANCH # Build your application $ npm run build
The option can be disabled by setting BundleStatsWebpackPlugin
compare
option to false
.
CLI to generate bundle stats report.
Gatsby plugin for bundle-stats.
Next.js plugin for bundle-stats.
Rollup plugin to generate bundle stats report for vite/rolldown/rollup.
Optimize your web app's performance with automated bundle stats analysis and monitoring.Standalone web application to compare Webpack/Lighthouse/Browsertime stats.
Github Action that generates bundle-stats reports.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4