NPM – 如何避免重复节点模块安装我的“沙箱”?

我有一个“沙盒”目录来testing各种节点的信息库。 每个仓库都有自己的package.json ,需要我运行npm来安装它的依赖项。 这导致一次又一次地安装相同的依赖项模块。

有没有办法避免这种浪费? 理想情况下,我希望每个存储库的package.json所需的所有模块安装在目录树顶部的“Sadbox”目录中,或者如果在那里,则跳过。

所以当我在里面运行npm i时候

 Sandbox/repo1 

它会检查它的package.json的模块是否已经在里面

 Sandbox/node_modules/ 

如果是和版本兼容,则会跳过该模块。

我试图使用dedupe但这似乎并没有这样的工作。

有两种可能性:

1: https : //docs.npmjs.com/files/folders#cycles-conflicts-and-folder-parsimony

在每一个阶段,如果一个包已经安装在一个祖先的node_modules文件夹中,那么它不会被安装在当前位置。

2: npm config-variable'link' :

如果这是真的,那么本地安装将会链接,如果有一个合适的全球安装包。

请注意,这意味着本地安装可以将事物同时安装到全局空间中。 链接只有在满足以下两个条件之一的情况下才能完成:

  • 该软件包尚未在全球范围内安装,或者
  • 全局安装的版本与本地安装的版本相同。

“ 这里 ”的答案提到了一种避免在安装npm install情况下遇到的相同软件包的重复下载/安装的方法。