webpack 自定义插件
AnalyzeWebpackPlugin
分析 webpack 打包资源大小,并输出分析文件格式为.md
javascript
class AnalyzeWebpackPlugin {
apply(compiler) {
// emit是异步串行钩子
compiler.hooks.emit.tap("AnalyzeWebpackPlugin", (compilation) => {
// Object.entries将对象变成二维数组。二维数组中第一项值是key,第二项值是value
const assets = Object.entries(compilation.assets);
let source = "# 分析打包资源大小 \n| 名称 | 大小 |\n| --- | --- |";
assets.forEach(([filename, file]) => {
source += `\n| ${filename} | ${Math.round(file.size() / 1024)}kb |`;
});
// 添加资源
compilation.assets["analyze.md"] = {
source() {
return source;
},
size() {
return source.length;
},
};
});
}
}
module.exports = AnalyzeWebpackPlugin;
webpack.config.js
javascript
const path = require("path");
module.exports = {
entry: "index.js",
output: {
path: path.resolve(__dirname, "./dist"),
filename: "bundle.js",
},
plugins: [new AnalyzeWebpackPlugin()],
};