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

时间:2019-01-10 07:50:19

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

通常在团队建立中,我在package-lock.json中遇到合并冲突,而我的快速解决方案一直是删除文件并用npm install重新生成。我尚未认真考虑此修复程序的含义,因为它以前没有引起任何可察觉的问题。

删除文件并用npm重新创建文件而不是手动解决冲突是否存在问题?

3 个答案:

答案 0 :(得分:21)

是的,它可能会有不良的副作用,也许不是很常见,但是例如您可以在package.json "moduleX": "^1.0.0"中使用,而您以前在"moduleX": "1.0.0"中使用package-lock.json

通过删除package-lock.json并运行npm install,您可能会不知道它就更新到moduleX的1.0.999版本,也许他们创建了一个错误或做了一个向后突破的更改(不遵循语义版本控制) )。

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

  1. 解决package.json内部的冲突
  2. 运行:npm install --package-lock-only

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

答案 1 :(得分:6)

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

  1. 如果您的团队在每个npm install之后都没有运行git pull,则您都在使用不同的依赖项版本。因此,其结尾为“但对我有用!!”和“我不明白为什么我的代码对您不起作用”

  2. 即使所有团队都在运作npm install,这也不意味着一切都很好。在某些时候,您可能会发现您的项目行为有所不同。在某种程度上,您已经多年没有改变了。在调试(可能很痛苦)之后,您会发现这是因为针对下一个主要版本的第三级依赖关系已更新,这导致了一些重大更改。

结论:永远不要删除package-lock.json。在您的情况下,您最好采用以下方法:

方法1

  1. 还原您在package-lock.json中的更改
  2. stash您的更改
  3. pull最新代码版本
  4. 为您需要添加的所有依赖项运行npm install
  5. 取消存储您的更改

方法2

  1. 运行合并
  2. 要解决冲突,请在package-lock.json上选择“仅其改变”策略
  3. 运行npm install,因此您要添加的依赖项也包含在package-lock.json
  4. 完成并提交合并提交

答案 2 :(得分:1)

我知道这是一个老问题,但是对于将来的求职者,您还可以使用npm-merge-driver来尝试自动解决npm相关文件的合并问题。

只需全局安装npx npm-merge-driver install --global。您可以在这里npm-merge-driver

了解更多信息