【问题标题】:Composer : Why some of my packages got automatically removed on installing a new packageComposer:为什么我的一些包在安装新包时被自动删除
【发布时间】:2020-06-01 22:16:21
【问题描述】:

My composer status while installing the new package

我尝试通过 composer 在 yii2 上安装 stripe 包。它已成功安装,但也自动删除了一些软件包。我没有编辑 composer.json 或锁定文件,我只是执行 composer require 命令来安装包。为什么作曲家删除了这些包,我怎样才能恢复它们?以后有什么办法可以预防吗? 谢谢!

【问题讨论】:

  • 你的项目需要这些包吗?如果是,为什么它们没有在您的composer.json 中列出?如果没有,你为什么关心它们被卸载?
  • @NicoHaase,这就是我关心的问题。我没有触及 composer.json 文件。我不确定,但其他开发人员可能已经在项目的其他部分使用它(我不知道)。
  • 好吧,您的测试套件将提供有关这方面的信息 - 如果其他开发人员之一使用了 composer.json 中未列出的包,您应该在添加这些包时检查版本控制原因。但如果不分享更多细节,就不可能提供帮助。

标签: composer-php


【解决方案1】:

假设你的项目A需要依赖B

依赖B的版本1.1.x需要包C

现在,如果您更新到依赖 B 的版本 1.2.x,它 不再依赖于包 Ccomposer 将自动检测孤立的依赖,因此删除包 C

如果您仍然希望包 C 在更新后对您的应用程序可用,您需要显式地 require 它 - 使其成为 显式 依赖项而不是 implicit 一个(作为另一个包的依赖项安装)。

composer 如果您调用composer require,会自动更新您项目的其他依赖项(尊重您的composer.json 的现有版本约束)。

要防止自动依赖更新,请使用:

composer require --no-update <package>

【讨论】:

  • 谢谢!我明白了,但是还有什么方法可以自动取回(恢复)这些包(无需手动再次安装)?我不确定,但我可能已经在其他模块中使用其中一个插件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-07
  • 1970-01-01
  • 2017-01-26
  • 2016-06-30
  • 2017-11-09
  • 2016-03-27
  • 1970-01-01
相关资源
最近更新 更多