Review
- 2024-10-06 18:01
[!Summary]
- Dependency Graph
- Module Graph
- Chunk Graph
一、Introduction #
compiler.make阶段:entry文件以dependence对象形式加入compilation的依赖列表,dependence对象记录有entry的类型、路径等信息- 根据
dependence调用对应的工厂函数创建module对象,之后读入module对应的文件内容,调用loader-runner对内容做转化,转化结果若有其它依赖则继续读入依赖资源,重复此过程直到所有依赖均被转化为module
compilation.seal阶段:- 遍历
module集合,根据entry配置及引入资源的方式,将module分配到不同的chunk - 遍历
chunk集合,调用compilation.emitAsset方法标记chunk的输出规则,即转化为assets集合
- 遍历
compiler.emitAssets阶段:- 将
assets写入文件系统
- 将
默认生成 Chunk 的规则是
- 每个 entry 对应一个 chunk
- 每个动态引入模块(
require.ensure(),import())会生成一个独立 chunk
存在的问题 多个 entry 可能有相同的依赖(dependence),默认规则打包后,存在冗余。
解决方案
CommonsChunkPluginSplitChunksPlugin:seal阶段优化DllPlugin&DllReferencePlugin拆分 bundles