删除'package-lock.json'以快速解决冲突

2022-08-30 02:26:13

在团队设置中,通常,我遇到了合并冲突,我的快速解决方法始终是删除文件并使用重新生成它。我没有认真考虑过此修复的含义,因为它以前没有引起任何可感知的问题。package-lock.jsonnpm install

删除文件并以这种方式重新创建它而不是手动解决冲突是否存在问题?npm


答案 1

是的,它可以而且会以非常糟糕的方式影响所有项目。

  1. 如果你的团队没有在每个之后运行,你们都使用不同的依赖项版本。所以它以“但它对我有用!”和“我不明白为什么我的代码不适合你”结束。npm installgit pull

  2. 即使所有团队都在运行,这并不意味着一切都很好。在某些时候,您可能会发现您的项目行为不同。在你多年来没有改变的部分。在(可能,非常痛苦的)调试之后,你会发现这是因为3rd级依赖项已经更新为下一个主要版本,这导致了一些重大更改。npm install

结论:永远不要删除。package-lock.json

是的,对于第一级依赖项,如果我们指定它们而不使用范围(如),则每次运行时都会获得相同的版本。但是对于2+级深度的依赖关系(我们的依赖关系所依赖的依赖关系),我们不能说同样的话,因此对于稳定性非常重要。"react": "16.12.0"npm installpackage-lock.json

在你的情况下,你最好做下一步:

  1. 修复冲突package.json
  2. npm install

就像它看起来一样简单。与 yarn 相同 - 它自行修复锁定文件冲突。这里唯一的要求是事先解决所有冲突(如果有的话)。package.json

每个文档 npm 将为您修复合并冲突。package-lock.json

[从2021年开始更新]重要!如果你已经使用了一些库,并且其维护者的npm / GitHub帐户被黑客入侵。并发布了包含恶意代码的新版本。而且你完好无损。你会没事的。如果你放下它,你就有麻烦了。package-lock.json


答案 2

是的,它可能会产生不良的副作用,也许不经常,但例如,您可以在package.json中具有,而您曾经在."moduleX": "^1.0.0""moduleX": "1.0.0"package-lock.json

通过删除和运行,您可以在不知情的情况下更新到moduleX的1.0.999版本,并且可能他们创建了一个错误或进行了向后的重大更改(不遵循语义版本控制)。package-lock.jsonnpm install

无论如何,已经有一个标准的解决方案。

  1. 修复内部冲突package.json
  2. 跑:npm install --package-lock-only

查看此链接以获取更多信息:

https://docs.npmjs.com/cli/v6/configuring-npm/package-locks#resolving-lockfile-conflicts