https://vip.yidengfe.com/ques/info/357#text-1-5-0
webpack本质是一种事件流机制,核心模块:tapable Hooks => compiler编译 => compilation(创建bundle)
介绍webpack及构建流程
https://developer.aliyun.com/article/61047
https://github.com/youngwind/blog/issues/99
https://github.com/youngwind/blog/issues/100
compiler
compiler钩子函数
https://webpack.docschina.org/api/compiler-hooks/
(事件)钩子函数 | 触发时机 | 参数 | 类型 |
---|---|---|---|
run | 开始读取 records 之前,钩入(hook into) compiler | compiler | AsyncSeriesHook |
compile | 一个新的编译(compilation)创建之后,钩入(hook into) compiler | compilationParams | SyncHook |
compilation | 编译(compilation)创建之后,执行插件 | compilation | SyncHook |
—-分割 | |||
make | compilation | AsyncParallelHook | |
—-分割 | |||
emit | 生成资源到 output 目录之前 | compilation | AsyncSeriesHook |
done | 编译(compilation)完成 | stats | AsyncSeriesHook |
compilation
compilation钩子函数
https://webpack.docschina.org/api/compilation-hooks/
钩子函数 | 触发时机 | 参数 | 类型 |
---|---|---|---|
buildModule | 在模块构建开始之前触发 | module | SyncHook |
seal | 编译(compilation)停止接收新模块时触发 | SyncHook |
拆分
识别reuqire.ensure后进行拆分
多个module构建出一个chunk
如何将多个符合CommonJS规范的模块打包成一个JS文件?
模块依赖和模块查找, 生成一个依赖依赖关系对象。