首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么‘`npm install`为同一个`package.json`文件生成不同的`Packy-lock.json’文件?

为什么‘`npm install`为同一个`package.json`文件生成不同的`Packy-lock.json’文件?
EN

Stack Overflow用户
提问于 2018-06-11 14:17:51
回答 1查看 4.1K关注 0票数 6

下面是我的package.json文件的相关部分:

代码语言:javascript
复制
  "devDependencies": {
    "ajv": "^6.0.0",
    "webpack": "^4.0.0",
    "websocket": "^1.0.0",
    "bignumber.js": "^7.0.0",
    "decimal.js": "^10.0.0",
    "truffle": "4.1.11",
    "ganache-cli": "6.1.0",
    "solidity-coverage": "0.5.4",
    "ethereumjs-testrpc-sc": "6.1.2",
    "web3": "1.0.0-beta.34"
  }

我把这个文件放在两个不同的存储库中,在同一台PC上。

当我在每个存储库中同时运行npm install时,我会在每个存储库中得到一个不同的package-lock.json文件。

这怎么可能是?

以下是一条可能的线索:

如果我提前删除了package-lock.json文件,那么npm install就会出现错误。

因此,我问题的答案可能与npm install依赖于已经存在的package-lock.json文件这一事实有关。

最初,我在这些存储库中有不同的package-lock.json文件,因为对应的package.json文件是不同的。

现在,我已经将其中一个存储库中的package.json文件更改为与另一个存储库相同,我期望相应的package-lock.json文件也会相同。

EN

回答 1

Stack Overflow用户

发布于 2018-06-11 14:25:44

来自https://docs.npmjs.com/files/package-locks

“从概念上讲,npm安装的”输入“是一个package.json,而它的”输出“是一个完全形成的node_modules树:表示您声明的依赖关系。在理想的世界中,npm将像一个纯函数一样工作:相同的package.json应该在任何时候产生完全相同的node_modules树。在某些情况下,这确实是正确的。但在其他许多情况下,npm无法做到这一点。有多种原因:

  • 可能使用不同版本的npm (或其他包管理器)来安装软件包,每个版本使用的安装算法略有不同。“

包锁文件将确保不会因为包版本稍有不同而中断,同时在同一台计算机上运行npm安装并不能保证获得所有依赖项的相同版本。

另一点可能说明包文件与包锁文件的区别。两个相同的package.json文件不能保证node_modules文件夹结构相同。但是两个相同的包锁文件将保证完全相同的node_modules文件结构。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50799914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档