通常在团队建立中,我在package-lock.json
中遇到合并冲突,而我的快速解决方案一直是删除文件并用npm install
重新生成。我尚未认真考虑此修复程序的含义,因为它以前没有引起任何可察觉的问题。
删除文件并用npm
重新创建文件而不是手动解决冲突是否存在问题?
答案 0 :(得分:21)
是的,它可能会有不良的副作用,也许不是很常见,但是例如您可以在package.json "moduleX": "^1.0.0"
中使用,而您以前在"moduleX": "1.0.0"
中使用package-lock.json
。
通过删除package-lock.json
并运行npm install
,您可能会不知道它就更新到moduleX的1.0.999版本,也许他们创建了一个错误或做了一个向后突破的更改(不遵循语义版本控制) )。
无论如何,已经有一个标准的解决方案。
package.json
内部的冲突npm install --package-lock-only
https://docs.npmjs.com/configuring-npm/package-locks.html#resolving-lockfile-conflicts
答案 1 :(得分:6)
是的,它会并且会以非常糟糕的方式影响所有项目。
如果您的团队在每个npm install
之后都没有运行git pull
,则您都在使用不同的依赖项版本。因此,其结尾为“但对我有用!!”和“我不明白为什么我的代码对您不起作用”
即使所有团队都在运作npm install
,这也不意味着一切都很好。在某些时候,您可能会发现您的项目行为有所不同。在某种程度上,您已经多年没有改变了。在调试(可能很痛苦)之后,您会发现这是因为针对下一个主要版本的第三级依赖关系已更新,这导致了一些重大更改。
结论:永远不要删除package-lock.json
。在您的情况下,您最好采用以下方法:
方法1
package-lock.json
中的更改stash
您的更改pull
最新代码版本npm install
方法2
package-lock.json
上选择“仅其改变”策略npm install
,因此您要添加的依赖项也包含在package-lock.json
答案 2 :(得分:1)
我知道这是一个老问题,但是对于将来的求职者,您还可以使用npm-merge-driver来尝试自动解决npm相关文件的合并问题。
只需全局安装npx npm-merge-driver install --global
。您可以在这里npm-merge-driver