允许Composer在require上降级依赖项



我通过composer安装了一个需要guzzlehttp >=6.0的包。有了这个要求,composer选择安装6.2.1。

我现在试图要求一个明确要求6.1.1的依赖项。

我得到以下错误: Problem 1 - Can only install one of: guzzlehttp/guzzle[6.1.1, 6.2.1]. - Can only install one of: guzzlehttp/guzzle[6.2.1, 6.1.1]. - Can only install one of: guzzlehttp/guzzle[6.1.1, 6.2.1]. - chargely/chargify-sdk-php v0.1.1 requires guzzlehttp/guzzle 6.1.1 -> satisfiable by guzzlehttp/guzzle[6.1.1]. - Installation request for chargely/chargify-sdk-php ^0.1.1 -> satisfiable by chargely/chargify-sdk-php[v0.1.1]. - Installation request for guzzlehttp/guzzle (locked at 6.2.1) -> satisfiable by guzzlehttp/guzzle[6.2.1].

同时,composer why确认,因为我的>=6.0要求,只有那个版本的guzzle存在。

理论上,初始需求应该可以使用降级版本的guzzle。我该如何让作曲者做到这一点呢?

如果您有两个具有并发性要求的包,您可以使用混叠。

在您的composer.json中,只需添加:

"require": {
    "guzzlehttp/guzzle": "6.2 as 6.1"
}

然后添加新的composer require ...包。

查看更多详细答案

简写为"找到依赖项的正确版本,添加新包,然后删除硬编码的版本约束。

总结(对于带有供应商/依赖约束的vendor/current:"^1.0|^2.0")

composer require vendor/dependency:^1.0
composer require vendor/new
composer remove vendor/dependency

  1. 对于vendor/currentvendor/dependency:"^1.0|^2.0"
  2. Composer将安装最高兼容版本vendor/dependency:2.x
  3. 然后你尝试安装vendor/newvendor/dependency:"^1.0" =>失败(因为您已经安装了过高的供应商/依赖(2.0)
  4. 所以手动获取正确的供应商/依赖版本composer require vendor/dependency:^1.0
  5. 获取新包composer require vendor/new
  6. 删除编辑器中的硬编码约束。json composer remove vendor/dependency

相关内容

  • 没有找到相关文章

最新更新