webpack 代码压缩

webpack代码压缩是通过 uglifyjs-webpack-plugin 插件来实现的

webpack插件

webpack 插件是一个具有 apply 方法的 JavaScript 对象。apply 方法会被 webpack compiler 调用,并且 compiler 对象可在整个编译生命周期访问。

compiler & compilation 对象

官方给出了

compiler 对象的事件钩子

compilation 对象的事件钩子

compilation.seal这个函数位于/node_modules/webpack/lib/Complations.js中

this.hooks.optimizeChunkAssets.callAsync(只是调用,实现在 uglifyjs-webpack-plugin中) 在1282行 在这个hooks中webpack调用了 uglifyjs-webpack-plugin 完成了代码压缩

uglifyjs-webpack-plugin中hooks的实现

  1. 构建一个task,然后task.run

参考: