面试题答案
一键面试实现思路
- 定义插件类:创建一个JavaScript类,作为Webpack插件。
- 绑定事件钩子:利用Webpack的
compilation
事件钩子,在打包即将结束时获取生成的chunk信息。 - 获取chunk名称和大小:通过
compilation.chunks
获取所有chunk,遍历计算每个chunk的大小。 - 控制台输出:将chunk名称及其大小输出到控制台。
关键代码示例
class ChunkSizePlugin {
apply(compiler) {
compiler.hooks.emit.tap('ChunkSizePlugin', compilation => {
const chunks = compilation.chunks;
chunks.forEach(chunk => {
let size = 0;
chunk.files.forEach(file => {
const asset = compilation.assets[file];
if (asset) {
size += asset.size();
}
});
console.log(`Chunk Name: ${chunk.name}, Size: ${size} bytes`);
});
});
}
}
module.exports = ChunkSizePlugin;
在Webpack配置中使用该插件:
const ChunkSizePlugin = require('./ChunkSizePlugin');
module.exports = {
// 其他配置项
plugins: [
new ChunkSizePlugin()
]
};