删除“包锁定. json”快速解决冲突

在团队设置中,通常我会遇到 package-lock.json中的合并冲突,我的快速修复方法一直是删除文件并用 npm install重新生成它。我没有认真考虑这个修复的含义,因为它以前没有引起任何可察觉的问题。

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

202504 次浏览

是的,它能够并且将会以非常糟糕的方式影响所有的项目。

  1. 如果你的团队没有在每个 git pull之后运行 npm install,那么你们都在使用不同的依赖版本。所以结尾是“但对我有用! !”还有“我不明白为什么我的代码对你不起作用”

  2. 即使所有的车队运行 npm install仍然不意味着一切都没问题。在某些时候,你可能会发现你的项目有不同的行为。一部分你已经多年没有改变了。经过(可能,相当痛苦)调试后,你会发现这是因为第三级依赖已经更新为下一个主要版本,这导致了一些突破性的变化。

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

是的,对于第一级依赖关系,如果我们指定它们没有范围(如 "react": "16.12.0") ,那么我们每次运行 npm install都会得到相同的版本。但是我们不能对2 + 级深度的依赖关系(我们的依赖关系所依赖的依赖关系)说同样的话,所以 package-lock.json对于稳定性真的很重要。

就你而言,你最好采取下一种方式:

  1. 修复 package.json中的冲突
  2. 运行 npm install

就像看起来那么简单。纱线也一样-它自己修复锁文件冲突。这里唯一的要求是在 package.json中预先解决所有冲突(如果有的话)。

每个 医生 npm 将为您修复 package-lock.json中的合并冲突。

重要!如果您已经使用了某个库,并且其维护者的 npm/GitHub 帐户被黑客攻击。而新版本的恶意代码内发布。你的 package-lock.json完好无损。你会没事的。如果你掉了它,你就有麻烦了。

我知道这是一个老问题,但是对于未来的搜索者,您也可以使用 npm-merge-Driver,它尝试自动解决与 npm 相关的文件的合并问题。

只要安装它在全球 npx npm-merge-driver install --global。你可以在这里阅读更多关于它的 Npm-合并-驱动程序

编辑: 只是想提醒人们,谁有兴趣使用上述软件包,有时它可以行为不稳定,难以删除。因此,尽管它是一个有用的工具,它仍然需要一些工作。

编辑: 这个存储库现在被归档并且只读。

是的,它可能有不好的副作用,也许不是经常,但是例如,你可以在 package.json "moduleX": "^1.0.0"和你过去有 "moduleX": "1.0.0"package-lock.json

通过删除 package-lock.json并运行 npm install,你可以在不知情的情况下更新到1.0.999版本的 moduleX,也许他们已经创建了一个 bug 或者做了一个向后的改变(没有遵循语义版本控制)。

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

  1. 修复 package.json中的冲突
  2. 运行: npm install --package-lock-only

点击这个链接了解更多信息:

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

npm i --force为我工作