npm8中文文档
循环使用 node 模块系统的属性处理,它遍历目录查找 node_modules
文件夹。因此,在每个阶段,如果一个包已经安装在祖先 node_modules
文件夹中,那么它不会安装在当前位置。
考虑上面的情况,其中 foo -> bar -> baz
。想象一下,如果除此之外,baz 还依赖于 bar,那么您将拥有:foo -> bar -> baz -> bar -> baz ...
。但是,由于文件夹结构是:foo/node_modules/bar/node_modules/baz
,所以不需要再把bar的副本放到.../baz/node_modules
中,因为调用require("bar")时,会得到安装在foo/node_modules/bar
中的副本。
只有在多个嵌套的 node_modules
文件夹中安装完全相同的版本时,才使用此快捷方式。如果两个 "a" 包是不同的版本,仍然可以有 a/node_modules/b/node_modules/a
。但是,如果不多次重复完全相同的包,将始终防止无限倒退。
可以通过在本地化 "target" 文件夹下的最高级别安装依赖项来进行另一项优化。