默认情况下使“npm install”重复数据删除(扁平化)

Kou*_*sha 5 node.js npm

我制作了这个示例目录示例:

packages/
   package1/
     -- this has lodash as dependencies
   package2/
     -- this has package1 as dependencies using file:///path/to/packages/package1
Run Code Online (Sandbox Code Playgroud)

当我在我的目录层次结构npm install中执行操作时package2

package2/
  node_modules/
    package1/
      node_modules/
        lodash/
Run Code Online (Sandbox Code Playgroud)

如果我运行npm dedupe后,目录将变为:

package2/
  node_modules/
    package1/
    lodash/
Run Code Online (Sandbox Code Playgroud)

另一方面,如果我这样做yarn install,那么默认情况下我会得到扁平目录。我怎样才能使两者的npm install行为yarn install相同?npm dedupe速度非常慢并且在实际应用中不实用。

这不仅仅是一个方便的问题 - 我目前有一个script包,我想将常见的依赖项移入其中。但是,如果结构没有展平,那么如果我require('some-package')在这个scripts存储库中执行此操作,我会发现找不到模块,因为包是嵌套的。

Vik*_*kas 0

使用npm install --prefer-dedupe

它并不总是会扁平化依赖关系,扁平化取决于依赖关系树的当前状态。

这是有关它的文档 - > https://docs.npmjs.com/cli/v8/commands/npm-dedupe