Appearance
制作plugin
钩子机制。当事件发生时,钩子就会被触发。
由于钩子实在编译、打包流程中调用的,编写插件所以要对编译、打包流程有具体理解。
javascript
class Myplugin{
apply (compiler){
console.log('myplugin')
// 下面emit就是个钩子
compiler.hooks.emit.tap('Myplugin', compilation=>{
for(const name in compilation.assets){
// console.log(name) // 文件名称
// console.log(compilation.assets[name].source()) // 文件中的源码
if(name.endsWith('.js')){
const contents = compilation.assets[name].source()
const withoutComments = contents.replace(/\/\*\*+\*\//g, '');
// 将结果写回打包文件中。size是必须的
compilation.assets[name] = {
source: () => withoutComments,
size: () => withoutComments.length
}
}
}
})
}
}