npm5 package-lock.json不同机器上的不同条目

时间:2017-06-25 15:57:41

标签: npm node-modules package.json package-lock.json

我们的项目使用npm进行包管理。从npm 4升级到npm 5后,我们决定选择加入新的package-lock.json

在提交并在其他计算机上执行npm install之后,我们发现了指定版本和已解决条目的方式的差异:

1)将version编码为URL的package-lock.json依赖项示例:

"jspm": {
  "version": "https://registry.npmjs.org/jspm/-/jspm-0.16.52.tgz",
  "integrity": "sha1-axhH4I8TGsm9JnzFiXSXmudnXS4=",
  "dev": true
},
 "systemjs": {
  "version": "https://registry.npmjs.org/systemjs/-/systemjs-0.19.46.tgz",
  "integrity": "sha1-wEV0szNfBSoOPHoA7kGIxuTB444=",
  "dev": true
},

2)包含versionresolved属性的package-lock.json依赖项的示例:

"jspm": {
  "version": "0.16.53",
  "resolved": "https://registry.npmjs.org/jspm/-/jspm-0.16.53.tgz",
  "integrity": "sha1-VvNR9JWUyJM+XgG2UUWsrr/PtZ4=",
  "dev": true,
  "dependencies": {
    ...
  }
},
"systemjs": {
  "version": "0.19.46",
  "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-0.19.46.tgz",
  "integrity": "sha1-wEV0szNfBSoOPHoA7kGIxuTB444=",
  "dev": true
},
...

除了 unstable package-lock.json 之外,我们的构建服务器在安装第一个示例时遇到了问题。

2 个答案:

答案 0 :(得分:6)

按照此过程生成package-lock.json的稳定版本:

  1. 删除现有的node_modules文件夹
  2. 删除现有的package-lock.json
  3. 执行npm install
  4. 提交并推送 package-lock.json
  5. 对于团队的其他成员:

    1. 删除现有的node_modules文件夹
    2. 新的 package-lock.json
    3. 执行npm install
    4. 在继续之前删除现有的node_modules是必不可少的步骤,因为package-lock.json会解析node_modules文件夹中的 现有元数据 。 这意味着如果您的node_modules文件夹中有剩余部分,它们可能会被添加到package-lock的依赖项中,即使它们不再是实际依赖项(

答案 1 :(得分:1)

您可能要在两台机器上检查这种情况:

  • 您的节点+ npm版本相同,并且可能执行<div className="col-md-8 d-flex justify-content-around questionDetailRow1"> {analytics.map(...)} </div>
  • npm配置属性save-exact在两台计算机上都具有相同的值。 (否则执行npm -g update npm