【问题标题】:Why does "npm install" modify package-lock.json? Why commit it to git then?为什么“npm install”会修改 package-lock.json?那为什么要把它提交给git呢?
【发布时间】:2019-03-31 07:53:35
【问题描述】:

当我在项目中运行“npm install”时,它经常会修改 package-lock.json,例如,如果我在另一台计算机上处​​理同一个项目(使用不同的节点或 npm 版本)。

但同时文档建议该文件应该添加到版本控制(在我的情况下为 git):

https://docs.npmjs.com/files/package-lock.json

此文件旨在提交到源存储库中,并且 有多种用途:...

那么我应该在切换工作机器或其他人npm install 时来回提交 npm 所做的更改吗?这将是一场噩梦。

目前我只是放弃了 npm 对 package-lock.json 所做的任何更改,它运行良好。所以我还不如将它添加到.gitignore...

我做错了吗?我应该改用npm ci 吗?我不会称我的电脑为“CI”,它只是一台开发机器,我为什么要在那里使用它?

基本上我和这位先生有同样的问题:

https://github.com/npm/npm/issues/18103#issuecomment-370401935

(遗憾的是,我根本无法对该问题添加评论或创建新问题,npm 存储库已禁用问题)

【问题讨论】:

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


【解决方案1】:

是的,您希望将您的 package-lock.json 文件提交到源代码管理。这背后的原因是为了确保为每个下拉代码的用户下载和安装每个包的所有相同版本。包含该文件还有其他一些原因,例如跟踪对包树的更改以供审核。

【讨论】:

  • 是的,我了解锁定文件的用途,但在 npm 的情况下,它实际上会安装 不同 版本的软件包而不是锁定文件中的软件包(并修改了这些版本在做的时候)-这个我不明白
  • 从 NPM 版本 5.1.0 开始,就 package.json 中更高的依赖包版本而言,package.json 可以胜过 package-lock.json。这可以通过删除锁定文件中包版本中的波浪号来解决。
猜你喜欢
  • 2020-07-16
  • 2017-12-14
  • 2019-09-27
  • 1970-01-01
  • 2020-12-29
  • 2018-11-20
  • 2017-10-30
  • 1970-01-01
相关资源
最近更新 更多