两种模式
nest模式
基本行为:
在require/import
时,向上递归查找依赖,直到全局node_modules
结束。
特点:
每个包在自己内部管理依赖,结构清晰简单。
不足:
如果A包
和B包
都依赖了axios
,就会导致axios
在A包
和B包
的node_modules
中各安装一次,产生重复安装。
flat模式
基本模式:
在require/import
时,向上递归查找依赖,直到全局node_modules
结束。
特点:
在npm install
时,npm
会将axios
这种被多个包依赖的包提升到项目根目录的node_modules
中。减少重复安装。
不足:
重复安装只是被缓解了,没有完全解决。
为什么说flat模式并没有完全解决重复安装的问题?
考虑如下依赖关系:
如果对上图应用flat模式
,我们会遇到一个问题:
当npm
遍历A包
和B包
,发现公共依赖axios@1.0
,决定将axios@1.0
提升到项目根目录的node_modules
中。
接下来遍历B包
和C包
,发现也有公共依赖axios@2.0
,但是根目录已经被axios@1.0
占用了,所以只能放弃提升,也就又出现了nest模式
的重复安装问题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。