【发布时间】:2018-02-20 04:43:17
【问题描述】:
将 npm 的 package-lock.json 置于版本控制之下有什么意义?根据我的经验,控制此文件源所带来的麻烦和困惑比效率提升要多。
每次添加/删除/修改任何节点模块的开发人员需要解决分支之间的冲突时,将package-lock.json 置于源代码控制之下都会导致头疼。特别是在 package-lock.json 可能长达数万行的复杂/大型应用程序上工作。即使只是删除 node_modules 并运行一个新的npm install 也会在包锁中产生巨大的变化。
关于包锁还有其他几个 SO 问题:
- Do I commit the package-lock.json file created by npm
- Npm - package-lock.json role
- Why does npm install rewrite package-lock.json?
还有一个 GitHub 问题,其中包含大量关于包锁定的对话:
这让我认为仍然存在需要消除的广泛不确定性。
根据文档
package-lock.json会为 npm 修改 node_modules 树或 package.json 的任何操作自动生成。
那么为什么要将自动生成的文件置于源代码管理之下?
上述 GitHub 问题详细说明了一些人如何响应与 package-lock.json 的混淆,将他们的 npm install 脚本更改为 rm -f package-lock.json && npm install,这也感觉不正确。
似乎package-lock.json 正在努力成为节点模块依赖项的确切版本的真相来源,但这不正是 package.json 所做的吗?解决此文件中的合并冲突的痛苦何时开始得到回报?
【问题讨论】:
-
您的团队应该同意在每次代码更改时仅遵循 package-lock.json 中的“当前工作”模块版本,除非你们都同意需要升级当前模块。这样,package-lock.json 让每个人都知道需要哪个模块版本以及“当前正在使用”您的应用程序。
标签: npm version-control package.json package-lock.json