【问题标题】:How does NPM handle Conflicts with Sub/Transitive DependenciesNPM 如何处理与子/传递依赖的冲突
【发布时间】:2020-04-25 17:38:48
【问题描述】:

just discovered(为我自己)说 NPM 不像我过去使用的其他包管理系统那样工作。我对事物的基本理解是,我的每个依赖项也将有自己的 node_modules 文件夹和它自己的依赖项(并且,对于更新版本的 npm,只有在版本冲突时才会创建第二个 node_modules 文件夹)

这看起来很简洁,但我想知道 npm 是如何处理 -- sub-sub 的? -- 依赖冲突。我很抱歉没有更好地掌握语言——但这就是我的意思。

我想将 @foo/bar 的 3.0 版安装到我的项目中。

第二个包——我们称之为@second/package——我想安装@foo/bar的2.0版。

我现在了解 NPM 是如何实现的。 @second/package 将拥有自己的 node_modules 文件夹,其版本为 @foo/bar 2.0

./node_modules/@foo/bar                              # version 3.0
./node_modules/@second/package/node_modules/@foo/bar # version 2.0

然而——

我也想安装@zip/zap的8.0版。

但是@second/package 想要安装@zip/zap 的7.0 版。

@foo/bar 的2.0 版想要安装@zip/zap 的6.0 版。

./node_modules/@foo/bar                              # version 3.0
./node_modules/@zip/zap                              # version 8.0
./node_modules/@second/package/node_modules/@foo/bar # version 2.0
./node_modules/@second/package/node_modules/@zip/zip # version 7.0    

# where does version 6.0 of @zip/zap go?

@zip/zap 的 6.0 版在哪里结束? npm 是否创建了 第三层node_module 文件夹,还是放弃并说它无法解析此依赖树?还是第三件事?还是我对 npm 的理解还有缺陷?

在我去弄清楚如何使用假包设置我自己的 npm 存储库来测试这一点之前,我认为最好先问一下。

【问题讨论】:

    标签: node.js npm dependency-management


    【解决方案1】:

    NPM,令我惊讶的是,做了正确的事情并继续嵌套子依赖项。即,回答问题

    @zip/zap 6.0 版在哪里?

    ./node_modules/@second/package/node_modules/@foo/bar/node_modules/@zip/zap
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-16
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 2016-08-21
      • 2023-02-02
      • 1970-01-01
      • 2020-10-02
      相关资源
      最近更新 更多