最近在重温webpack配置,看到官方文档在讲Entry points的时候,提到了runtime和dependOn不能一起用。如下图所示:
- dependOn 用来设置依赖的entry point,也就是说如果你设置的这个entry依赖其他entry,那么你可以设置这个属性声明依赖关系。
- runtime 用来设置是否单独生成一个runtime chunk(webapck运行时代码)
所以这两个风马牛不相及的属性为什么不能一起用?一个在设置entry的依赖,一个在控制是否单独生成runtime chunk。
要想知道这个问题需要先了解runtime chunk是什么?
runtime chunk 是webpack的运行时代码,负责模块的加载和解析。包含了
- 模块缓存(
__webpack_modules__):存储了所有模块的导出。 - 模块加载逻辑:包括异步加载模块的逻辑,如
import()语法。 - 模块映射关系:用于确定模块的加载顺序和依赖关系。
因为runtime chunk保存着所有模块的导出和映射关系,所以处于同一个runtime下的两个entry才可以相互依赖,而如果想要为一个entry生成独立的runtime,这个entry就不能依赖其他entry。