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

问题描述 投票:0回答:5

在组建的团队中,通常,我会在

package-lock.json
中遇到合并冲突,我的快速解决方法始终是删除文件并使用
npm install
重新生成它。我没有认真考虑此修复的含义,因为它之前没有引起任何可察觉的问题。

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

    

javascript node.js npm package-lock.json
5个回答
194
投票

    如果您的团队在每个
  1. npm

    之后没有运行

    npm install
    ,那么你们都在使用不同的依赖项版本。所以它以“但这对我有用!!”结尾。和“我不明白为什么我的代码不适合你”
    
    

  2. 即使所有团队都在跑步
  3. git pull

    ,也不意味着一切都好。有时您可能会发现您的项目表现不同。多年来你一直没有改变的部分。在(可能非常痛苦)调试之后,您会发现这是因为第三级依赖项已更新为下一个主要版本,这导致了一些重大更改。

    
    

  4. 结论:永远不要删除
npm install

是的,对于第一级依赖项,如果我们在没有范围的情况下指定它们(如

package-lock.json

),我们每次运行

"react": "16.12.0"
时都会得到相同的版本。但我们不能对 2+ 级深度的依赖关系(我们的依赖关系所依赖的依赖关系)说同样的话,所以
npm install
对于稳定性来说非常重要。
在你的情况下,你最好采取下一步行动:

修复
    package-lock.json
  1. 中的冲突
    
    奔跑
  2. package.json
  3. 
    
  4. 就像看起来一样简单。与yarn 相同 - 它自行修复锁定文件冲突。这里唯一的要求是提前解决
npm install

中的所有冲突(如果有)。

Per 

docs

npm 将为您解决 package.json 中的合并冲突。

[2021 年更新]重要!如果你已经使用了某个库,并且其维护者的 npm/GitHub 帐户被黑客入侵。并且发布了包含恶意代码的新版本。而且你完好无损地

package-lock.json

。你会好起来的。如果你丢掉它,你就有麻烦了。

    


126
投票
package-lock.json

,而您曾经在

"moduleX": "^1.0.0"
中使用
"moduleX": "1.0.0"
通过删除 

package-lock.json

并运行

package-lock.json
,您可能会在不知情的情况下更新到 moduleX 的 1.0.999 版本,并且可能他们已经创建了一个错误或进行了向后破坏性更改(不遵循语义版本控制)。
无论如何,已经有一个标准的解决方案了。

解决内部冲突
    npm install
  1. 运行:
  2. package.json
  3. 
    
  4. 查看此链接以获取更多信息:

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


18
投票

只需全局安装即可

npm install --package-lock-only

。您可以在这里阅读更多相关信息

npm-merge-driver
编辑:只是想警告对使用上述软件包感兴趣的人们,有时它可能会表现得不稳定且难以删除。因此,虽然它是一个有用的工具,但仍然需要一些工作。

编辑:此存储库现已存档且只读。


0
投票
npx npm-merge-driver install --global

为我做工作

    


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.