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

npm5 package-lock.json不同机器上的不同条目,npm,node-modules,package.json,package-lock.json,Npm,Node Modules,Package.json,Package Lock.json,我们的项目使用npm进行包管理。从NPM4升级到NPM5后,我们决定选择使用新的包锁.json 提交并在其他机器上执行npm安装后,我们发现在指定版本和解析项的方式上存在差异: 1)package-lock.json依赖项示例,其版本编码为URL: "jspm": { "version": "https://registry.npmjs.org/jspm/-/jspm-0.16.52.tgz", "integrity": "sha1-axhH4I8TGsm9JnzFiXSXmudnXS4

我们的项目使用npm进行包管理。从NPM4升级到NPM5后,我们决定选择使用新的
包锁.json

提交并在其他机器上执行
npm安装
后,我们发现在指定版本和解析项的方式上存在差异:

1)package-lock.json依赖项示例,其
版本编码为
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
},
"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
},
...
2)具有
version
已解析的
属性的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
},
"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外,我们的构建服务器在安装第一个示例时还存在问题。

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

  • 删除现有的
    节点\u模块
    文件夹
  • 删除现有的
    包锁.json
  • 执行
    npm安装
  • 提交并按下包锁.json
  • 对于团队的其他成员:

  • 删除现有的
    节点\u模块
    文件夹
  • pull新的包锁.json
  • 执行
    npm安装
  • 在继续之前删除现有的node_模块是一个必不可少的步骤,因为package-lock.json会解析
    node_模块
    文件夹中的现有元数据。
    这意味着,如果您的node_modules文件夹中有剩余内容,它们可能会被添加到包锁的依赖项中,即使它们不再是实际的依赖项。

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

    • 您的node+npm版本相同,可能正在执行
      npm-g更新npm
    • npm配置属性在两台计算机上具有相同的值。(否则执行
      npm配置集保存\u精确的真/假
    这对我很有效(在创建package lock.json时,确保在执行
    npm安装之前删除node_modules文件夹和现有的package-lock.json(如果存在))。但是对于“为团队的其他成员”步骤,我需要添加步骤1a:Run
    npm install
    (不带package-lock.json和node_modules文件夹),1b:Delete node_modules文件夹和新创建的package-lock.json。继续执行步骤2和3至
    npm安装
    ,然后按预期工作。