如果你不希望使用 quiet
或 noInfo
这样的不显示信息,而是又不想得到全部的信息,只是想要获取某部分 bundle
的信息,使用 stats
选项是比较好的折衷方式。
有一些预设选项,可作为快捷方式。像这样使用它们:
stats: 'errors-only';
Preset | Alternative | Description |
---|---|---|
"errors-only" | none | 只有发生错误时输出 |
"minimal" | none | 只在发生错误或有新的编译时输出 |
"none" | false | 没有输出 |
"normal" | true | 标准输出 |
"verbose" | none | 全部数据 |
在 package.json
中使用 stats
:
{"scripts": {"build:stats": "webpack --env production --json > stats.json"}}
缺点:颗粒度太粗,看不出问题所在。
更多的选项配置:Webpack 统计信息
对 Webpack 构建速度进行优化的首要任务就是去知道哪些地方值得我们注意。
speed-measure-webpack-plugin 插件能够测量 Webpack 构建速度,并给出测量报告的输出:
从输出报告可以看到每个 loader 和 plugin 的执行耗时。
const SpeedMeasurePlugin = require('speed-measure-webpack-plugin');const smp = new SppedMeasurePlugin();const webpackConfig = smp.wrap({plugins: [new HtmlWebpackPlugin(),new PreloadWebpackPlugin().,]})
速度分析插件作用:
通过 webpack-bundle-analyzer 插件能够在 Webpack 构建结束后生成构建产物体积报告,配合可视化的页面,能够直观知道产物中的具体占用体积。
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;module.exports = {plugins: [new BundleAnalyzerPlugin()],};
插件生成的最终效果图如下:
这个插件做的工作本质就是分析在 compiler.plugin('done', function(stats))
时传入的参数。Stats 是 Webpack 的一个统计类。传入的实例如下图:
stats
compilation
对 Stats
实例调用 toJSON()
方法,获取格式化信息。
这个插件就是从 stats.json
中获取 chunks
然后最终使用 Canvas 画图。具体代码位于 analyzer.js
中的 getViewerData 方法。