两种模式

nest模式

image.png

基本行为:
require/import时,向上递归查找依赖,直到全局node_modules结束。

特点:
每个包在自己内部管理依赖,结构清晰简单。

不足:
如果A包B包都依赖了axios,就会导致axiosA包B包node_modules中各安装一次,产生重复安装。

flat模式

image.png

基本模式:
require/import时,向上递归查找依赖,直到全局node_modules结束。

特点:
npm install时,npm会将axios这种被多个包依赖的包提升到项目根目录的node_modules中。减少重复安装。

不足:
重复安装只是被缓解了,没有完全解决。

为什么说flat模式并没有完全解决重复安装的问题?

考虑如下依赖关系:
image.png

如果对上图应用flat模式,我们会遇到一个问题:
npm遍历A包B包,发现公共依赖axios@1.0,决定将axios@1.0提升到项目根目录的node_modules中。

接下来遍历B包C包,发现也有公共依赖axios@2.0,但是根目录已经被axios@1.0占用了,所以只能放弃提升,也就又出现了nest模式的重复安装问题。

image.png

参考资料

node_modules 与包管理器
前端工程师应该知道的yarn知识


热饭班长
3.7k 声望434 粉丝

先去做,做出一坨狗屎,再改进。