【问题标题】:Why can't NPM modules be entirely flat including dependencies?为什么 NPM 模块不能完全平坦,包括依赖项?
【发布时间】:2019-06-09 19:53:25
【问题描述】:

据我所知,NPM 你可能有一个像

这样的依赖结构
        APP
  /      |      \
A1.0    B1.0    C3.0
  |    /    \    |   \
C1.5 D1.27 C1.5 D1.27 A1.0

它不能完全平坦的原因是因为模块 C 可以有许多不同的版本

但是为什么我们不能将文件夹重命名为它们的版本并具有完全扁平的结构,并使用符号链接?

          APP
  /   /    |    \   \
A1.0 B1.0 C1.5 C3.0 D1.27
 ^|   |---^^|----^|--^-^
 ||-------| |----||--|
 |----------|

据我了解。 NPM3 / Microsoft RUSH / PNPM 会尝试扁平化事物,但仍然保持子依赖结构

        APP
  /   /    \   \
A1.0 B1.0 C3.0 D1.27
  |   |
C1.5 C1.5

这里既然已经有了模块 C,它会将另一个版本的 C 扔到 A 的子依赖中。但是现在我们有两个 C1.5 的

我错过了什么吗? 有没有真正的扁平化和符号链接的经理? 扁平结构不起作用有什么原因吗?

谢谢

【问题讨论】:

  • 这里既然已经有模块 C,它会将另一个版本的 C 扔到 A 的子依赖中。但是现在我们有两个 C1.5 - 你的案子? NPM 通常不会这样做。即使它是偶然发生的,也有npm dedupe。层次结构完全平坦是不切实际或不可能的,因为包不一定由其版本明确标识。

标签: node.js npm architecture dependencies dependency-management


【解决方案1】:

实际上我也遇到过这个问题,但很少发生,在大多数情况下,我有扁平的依赖结构。 我不确定是不是你的情况,但是当模块 A 依赖于模块 C 而模块 C 依赖于 A 时,可能会发生这种情况。

【讨论】:

    猜你喜欢
    • 2018-06-16
    • 2013-08-08
    • 2013-08-26
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 2019-09-23
    • 2011-02-07
    相关资源
    最近更新 更多