Webpack Bundle Analyzer
Webpack Bundle Analyzer 是 webpack-contrib 组织(Webpack 官方贡献者组织)维护的 Webpack 插件与 CLI 工具,把打包产物(bundle)按模块体积可视化成一张可缩放的 Treemap(矩形树图),让开发者一眼看出「哪个模块 / 哪个 npm 包 / 哪段代码吃掉了多少 KB」。它从 webpack stats 数据出发,提供 stat / parsed / gzip / brotli 四档体积维度,支持 server(启动 HTTP 服务)/ static(生成单 HTML)/ json(生成 JSON)/ disabled(仅生成 stats) 四种启动模式,是 Webpack 生态中事实标准的体积分析工具。当前稳定版 5.3.0(2026-03-25 发布),每周下载量百万级。需要注意的是:它的可视化图表仅 Treemap 一种(社区常误传支持 sunburst / network,那是 bundle-stats、Statoscope 等竞品的特性);且与 Vite 无官方关系——Vite 用 Rollup 打包,对应替代品是 rollup-plugin-visualizer 与零配置的 vite-bundle-visualizer。
评价
优点
- 官方背书、生态默认:webpack-contrib 维护,Webpack 生态体积分析事实标准
- 四档体积可切:stat / parsed / gzip / brotli 一键切换,区分「压缩器输入」「输出」「传输」三种维度
- 交互友好:treemap 支持缩放、右键 Context Menu(Hide / Show chunks)、左侧 sidebar 勾选 chunk
- CI 友好:
analyzerMode: 'static'生成单 HTML 报告,可归档为构建产物 - 端口可自动分配:
analyzerPort: 'auto'解决 CI / 容器化场景下的端口冲突 - stats JSON 可独立产出:
generateStatsFile: true给下游工具(bundle-stats、Statoscope)二次分析
缺点
- 仅一种视图:只 treemap,无 sunburst / network(需换工具)
- 仅服务于 Webpack:Vite / Rollup / esm 项目需换
rollup-plugin-visualizer - 内存型构建下 CLI 模式受限:webpack-dev-server 下 bundle 不落盘,CLI 拿不到 parsed/gzip,只能用插件模式
- parsed 是默认档位:直接拿报告体积汇报业务会有偏差(用户实际下载 gzip 后体积)
- excludeAssets 只过滤展示:不会让 webpack 真的不打包该资产,体积优化仍需在 webpack config 里处理
文档地址
webpack-bundle-analyzer README
GitHub地址
webpack-contrib/webpack-bundle-analyzer