- entry-options: options 初始化
- conmplie 开始编译
- make: 分析入口文件创建模块对象
- build-module 构建模块
- after-complie:完成所有模块构建,结束编译过程
- emit: Complier 开始输出生成的assets,插件有最后的机会修改assets
- after-emit: 输出完成
webpack 主要包括三个大阶段
参考链接:面试官:说说webpack的构建流程?
初始化阶段
获取用户配置,如 webpack.config.js 和 命令行 等。配置项拷贝到 options 对象,然后 生成 compiler 对象,Compiler 对象继承自Tapable,初始化时定义了很多钩子函数
编译阶段
根据配置中的entry找出所有的入口文件,初始化完成后 调用 compiler 的 run 来启动编译构建阶段
编译阶段主要有以下几步
- compiler 开始编译
- make 从入口点分析模块及依赖,创建这些模块对象 Module
- module build 这个阶段用 acron 分析资源,构建 AST 语法树,通过各种 loader 编译自已,如果遇到 require 等。然后递归构建
- seal 把 Moudle 封装构建结果,生成 chunk,分析优化chunk
- emit 将ckune 输出到结果文件