【问题标题】:Mitigate the diff noice by package-lock.json通过 package-lock.json 减轻差异噪音
【发布时间】:2019-02-20 05:53:23
【问题描述】:

我想这里没有硬性答案,但想知道其他人在将package-lock.json 提交到他们的node 存储库时如何处理 diff。

到目前为止,大多数意见似乎都支持提交package-lock.json - 确保在任何地方和任何地方安装完全相同版本的依赖项(请参阅Do I commit the package-lock.json file created by npm 5? )。但是每次我升级 npm 依赖项时,它都会弄乱 diff 工具。 Github上的码频可视化工具,自从我开始commitpackage-lock.json,基本就没用了。

例如,下图中的两个膨胀峰值是 package-lock.json 仅由 npm update 触发的变化的结果。

有什么办法可以缓解这种情况吗?还是我应该对这个不利因素无动于衷?

【问题讨论】:

  • 我习惯使用的一个非常舒适的选项是在package.json 中使用固定版本号并忽略锁定文件。如果您需要更新内容,请不时进行一次。
  • @nicholas 虽然解决了“问题”,但它引入了不稳定。
  • @nicholas 默认情况下,npm install package 其版本被添加为^1.0.0,因此只要其他人在没有锁定文件的情况下安装并且有更新的版本可用,就会安装它。如果该版本中的某些内容发生了变化,例如服务器在本地主机上正常运行时突然崩溃(去年有两次,然后固定所有依赖项)

标签: javascript node.js npm package.json


【解决方案1】:

为什么不直接将package-lock.json 添加到.gitignore。您仍然可以在不跟踪其更改的情况下提交文件。

看看official doc 怎么说:

应该受版本控制并分发给其他人的模式 通过克隆的存储库(即所有开发人员都想要的文件 忽略)应该进入一个.gitignore文件。

用户希望 Git 在所有情况下都忽略的模式(例如, 由用户选择的编辑器生成的备份或临时文件) 一般进入用户的 core.excludesFile 指定的文件 ~/.gitconfig.

【讨论】:

  • 嘿,我不是说要让文件过时。您仍然可以手动提交更改。由于.gitignore,您的更改不会自动暂存,但差异工具会忽略。
  • git commit package-lock.json -m "Committing although ignored for tracking"
  • 这不适用于 git 版本 2.34.1。当我执行git difftool 时,它会显示package-lock.json,即使它在.gitignore 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
  • 2016-10-02
  • 1970-01-01
  • 2018-10-06
  • 2018-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多