webpack 源码阅读笔记 大纲 - qianlongdoit/webpack GitHub Wiki
因为发现webpack本地打包和CI机器打包出来的hash值不一样,一番探究发现hash值的生成与项目的绝对路径相关。故而想弄清楚webpack的hash的生成的流程
-
chunk 待补充
-
module 待补充
主要负责整个项目的编译,包含编译过程中的整个生命周期。
规定了 hooks 以及 compilation执行的顺序。
创建compilation实例。
比如解析entryPoint、run、watchRun、compile、emit、done等生命周期函数。
上面有注册各种周期函数供plugin在各个阶段调用。
源码中可以通过搜索
hooks.<hook name>.call
来查看在什么时候调用的。模块被编译的时候会用到。执行者。
上面挂载有一些重要的属性 modules、assets、chunks。
基础的hash class,用来更新hash和计算hashDigest
updateHash: 更新hash.buffer
digest: 生成hash摘要
生成最后的输出资源文件,大致结构如下:
{ [filerPath]: source, // 原型为node_modules里面的webpack-source里面的source类 }
在
compilation
里面会 creatAssets、updateAssets、emitAsset。最后在
compiler.run
的最后阶段通过compiler.emitAssets
依据 assets里面的信息输出最终的打包文件。