3

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

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

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

"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) package-lock.json 依赖的例子versionresolved属性:

"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
},
...

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

4

2 回答 2

6

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

  1. 删除现有node_modules文件夹
  2. 删除现有的package-lock.json
  3. 履行npm install
  4. 提交并推送package-lock.json

对于团队的其他成员:

  1. 删除现有node_modules文件夹
  2. 取新的package-lock.json
  3. 履行npm install

在继续之前删除现有的 node_modules 是必不可少的步骤,因为 package-lock.json 确实会解析文件夹中的现有元数据。node_modules这意味着如果你的 node_modules 文件夹有 leftovers 它们可能会被添加到 package-lock 的依赖项中,即使它们不再是实际的依赖项。

于 2017-06-25T15:57:40.623 回答
1

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

  • 你的 node + npm 版本是一样的,也许在做npm -g update npm.
  • npm 配置属性save-exact在两台机器上具有相同的值。(否则做npm config set save_exact true/false
于 2018-11-20T11:20:42.573 回答