使用 插件实现过去除打包后的js文件中的注释
插件是一个带有 apply 方法的 class。
- 在 自定义的 插件 js 文件中,module.exports 一个 class,因为插件使用的时候要被 new
- class 含有一个 apply 方法
- 这个方法 接受一个 compiler 参数对象【compiler 对象中有各种钩子,在webpack 运行阶段被触发,实现这些钩子的核心是 tapable】
- 在 compiler 对象上 插入指定的 钩子
- 在钩子的回调函数中,拿到 compilation 对象
- 通过这个 对象可以拿到打包后的文件信息,比如 assets、modules、chunks 的信息
- 插件在 constructor 中可以接受参数
// 实现一个 删除 打包后的 js 文件中的 注释class removeComments {constructor(params) {// 通过 params 可以拿到参数console.log('参数', params);}apply(compiler) {compiler.hooks.emit.tap('removeComments', compilation => {for (let fileName in compilation.assets) {if (fileName && fileName.endsWith('.js')) {// 获取源文件const source = compilation.assets[fileName].source();const withoutComments = source.replace(/\/\*+\*\//g, '')/******/compilation.assets[fileName] = {source: () => withoutComments,size: () => withoutComments.length}}}})}}module.exports = removeComments;// 使用const RemoveComments = require('./src/plugins/removeComments')
