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

时间:2018-06-14 13:24:57

标签: node.js npm npm-install

场景1

终端:Windows 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获取 Angular 应用

场景2

终端:适用于Linux的Windows子系统(bash for ubuntu for windows

节点版本v8.11.1

npm版v5.6.0

我使用相同的npm install执行package.json,这次它为d3-scale: v1.0.7提供了build/文件夹,而不是dist/ quick comparison on d3-scale

现在由于这种差异,我不得不将我的systemjs.config.js更改为指向本地计算机的build

如果应用程序部署在服务器或云上,我不确定它可能会在d3-scale中下载node_modules,我可能需要为其提交修补程序。

问题

为什么首先出现差异?造成这种情况的原因是什么?

1 个答案:

答案 0 :(得分:1)

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

  

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

Source

因此,请尝试将Windows NPM升级到v5.6.0。它现在应该工作。