在 webpack 选项中的 entry 被处理过之后调用。一般用来获取入口。
beforeCompile 之后立即调用,但在一个新的 compilation 创建之前。这个钩子 不会 被复制到子编译器。能获取到normalModuleFactory和contextModuleFactory。

编译结束前,这个钩子 不会 被复制到子编译器。一般在操作资源时会用到。也会用来添加入口。

compilation 结束和封印之后执行。
初始化 compilation 时调用,在触发 compilation 事件之前调用。这个钩子 不会 被复制到子编译器。
compilation 创建之后执行。此阶段设置依赖对应的解析模板。可以获取到compilation和normalModuleFactory。
输出 asset 到 output 目录之前执行。这个钩子 不会 被复制到子编译器。
可以获取此次编译的hash值。
asset 处理,该阶段可以修改或删除编译的资源,此时获取的是assets原对象,如下图所示:



一般是要修改打包后的资源的时候调用。
操作运行时的模块。


添加运行时的依赖。

在初始化解析依赖路径之前调用。它应该返回 undefined 以继续。
在创建 NormalModule 实例后调用。可以获取到当前解析的模块。

在创建 Parser 实例后触发。
监听一段表达式,实现对表达式的处理。

当用作判断的时候触发。
import xxx from xxx时触发

在解析 if 语句时触发;作用等同于 statement,但仅在 statement.type == ‘IfStatement’ 时触发。
if (a) { // 触发钩子
}
所有代码都会被放入。可以查找自己需要的node,通过添加依赖的方式修改代码。


执行函数的时候触发。