代码之家  ›  专栏  ›  技术社区  ›  Shan-Desai askovpen

为什么npm在单独安装时会安装同一依赖项的两个不同版本

  •  0
  • Shan-Desai askovpen  · 技术社区  · 7 年前

    场景1

    终点站 视窗 cmd

    节点版本 : v8.0.0

    NPM版本 : v5.5.1

    我有一个 package.json 我特别提到

    "@swimlane/ngx-charts": "^7.3.0",
    "@swimlane/ngx-graph": "^4.3.0",
    

    它们有一个子依赖关系 d3-scale .

    在这种情况下 npm install 命令安装 d3-scale: v2.0.0 哪个有 dist/ 文件夹在里面。(注:我使用 d3-scale/dist 在一个 systemjs.config.js 文件为 角度的 应用程序)

    场景2

    终点站 :Windows Linux子系统( bash for ubuntu for windows )

    节点版本 : v8.11.1

    NPM版本 : v5.6.0

    我表演 NPM安装 同样的 包装袋 这次它给了我 d3-scale: v1.0.7 哪个有 build/ 文件夹而不是 DIST/ quick comparison on d3-scale .

    现在因为这个差异我不得不改变我的 系统js.config.js 指向 build 对于本地机器。

    如果应用程序部署在服务器或云上,我不确定 D3量表 它可能会在 node_modules 我可能要为它做一个修补程序。

    问题

    为什么一开始就有差异?这是什么原因?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Anditthas    7 年前

    npm团队似乎在v5.6.0中解决了一个问题。

    完全跨平台的package-lock.json。安装失败的可选 对一个平台的依赖性不再将其从依赖性中移除 树,这意味着现在应该生成package-lock.json 跨平台一致!

    Source

    所以试着把你的windows npm升级到v5.6.0。现在应该可以了。