webpack 生命周期 - 图1

  1. entry-options: options 初始化
  2. conmplie 开始编译
  3. make: 分析入口文件创建模块对象
  4. build-module 构建模块
  5. after-complie:完成所有模块构建,结束编译过程
  6. emit: Complier 开始输出生成的assets,插件有最后的机会修改assets
  7. after-emit: 输出完成


webpack 主要包括三个大阶段

参考链接:面试官:说说webpack的构建流程?

初始化阶段

获取用户配置,如 webpack.config.js 和 命令行 等。配置项拷贝到 options 对象,然后 生成 compiler 对象,Compiler 对象继承自Tapable,初始化时定义了很多钩子函数

编译阶段

根据配置中的entry找出所有的入口文件,初始化完成后 调用 compiler 的 run 来启动编译构建阶段
编译阶段主要有以下几步

  1. compiler 开始编译
  2. make 从入口点分析模块及依赖,创建这些模块对象 Module
  3. module build 这个阶段用 acron 分析资源,构建 AST 语法树,通过各种 loader 编译自已,如果遇到 require 等。然后递归构建
  4. seal 把 Moudle 封装构建结果,生成 chunk,分析优化chunk
  5. emit 将ckune 输出到结果文件