Webpack - 构建流程

148 阅读1分钟

核心思想

    1. 根据配置信息找到入口文件
    1. 从入口文件开始,收集关键信息:路径、源码、依赖的模块等
    1. 根据第2步得到的信息,编译文件,生成最终输出到文件系统的产物

其中会使用到:

  • loader系统:处理文件
  • plugin系统:在特定阶段执行某些逻辑,比如:将输入内容插入html、清空dist目录等

架构设计

Webpack

Webpack本质是一个函数,用于根据传入的配置信息创建Compiler对象、挂载插件、应用默认配置等。

Compiler

Compiler是贯穿Webpack整个生命周期的一个对象,用于维护webpack的状态:webpack的配置、注册的插件、各个阶段的事件等。在Compiler对象上注册了很多基于Tapable的事件,Webpack插件可通过监听不同阶段的事件,执行对应的逻辑。

Compilation

Compilation是每次打包过程中的产生的对象,专门负责编译的工作,保存有本次的编译信息:modules、assets、chunks、fileDependencies等。通过执行Compiler.run创建Compilation对象,并开始编译的过程。

时序图

image.png