webpack 生命周期

webpack 生命周期

概念:webpack 工作流中最核心的两个模块 Compiler Compilation 都扩展与 Tapable 类,用于实现工作流中的生命周期的划分,以便在不同的生命周期注册和调用插件,所以暴露出各个生命周期的节点称为Hook。(俗称钩子函数)

webpack 插件

webpack 插件是一个包含apply方法的 js 类。这个apply方法 通常是注册 webpack 中某一个生命周期的 hook,并添加对应的处理函数。

Hook 的使用方式:

1.在 Compiler 构造函数中定义参数和类型,生成 hook 对象。

2.在插件中注册 hook,添加对应 Hook 触发时的执行函数。

3.生成插件实例,运行 apply 方法。

4.在运行到对应生命周期节点时调用 Hook,执行注册过的插件的回调函数。

Compiler Hooks

构建器实例的生命周期可以分为 3 个阶段:初始化阶段、构建过程阶段、产物生成阶段。

初始化阶段

environment、afterEnvironment:在创建完 compiler 实例且执行了配置内定义的插件的 apply 方法后触发。

entryOption、afterPlugins、afterResolvers:在 WebpackOptionsApply.js 中,这 3 个 Hooks 分别在执行 EntryOptions 插件和其他 Webpack 内置插件,以及解析了 resolver 配置后触发。

构建过程阶段

normalModuleFactory、contextModuleFactory:在两类模块工厂创建后触发。

beforeRun、run、watchRun、beforeCompile、compile、thisCompilation、compilation、make、afterCompile:在运行构建过程中触发。

产物生成阶段

shouldEmit、emit、assetEmitted、afterEmit:在构建完成后,处理产物的过程中触发。

failed、done:在达到最终结果状态时触发。

JSRUN前端笔记, 是针对前端工程师开放的一个笔记分享平台,是前端工程师记录重点、分享经验的一个笔记本。JSRUN前端采用的 MarkDown 语法 (极客专用语法), 这里属于IT工程师。