如何覆盖由packagist.org?

时间:2017-09-25 16:07:36

标签: dependencies composer-php requirements composer.json

我有以下composer.json文件:

{
  "require": {
    "guzzlehttp/guzzle": "^5.3"
  },
  "require-dev": {
    "aeris/guzzle-http-mock": ">=1.1.5"
  }
}

我希望强制aeris/guzzle-http-mock package使用不同版本的guzzlehttp/guzzle(例如5.3.1),但似乎要求从{{1}中读取托管在 packagist.org 上的文件。是否有任何解决方法可以覆盖这些要求?

所以而不是:

composer.json

我想设置:

"guzzlehttp/guzzle": "~5.0.0"
理想情况下,只需更改我的本地"guzzlehttp/guzzle": "^5.3" 文件。

目前,该命令显示冲突错误:

composer.json

1 个答案:

答案 0 :(得分:2)

有一种解决方法是使用replace property来替换给定的包,因此其他包不会下载它。例如:

{
  "require": {
    "aeris/guzzle-http-mock": ">=1.1.5"
  },
  "replace": {
    "guzzlehttp/guzzle": "~5.0.0"
  },
  "minimum-stability": "dev",
  "prefer-stable": true
}

将忽略guzzlehttp/guzzle依赖关系并且无法下载,但正确的版本需要单独提供或作为软件包的一部分提供。

例如,可以通过添加:

手动克隆所需的存储库
"repositories": [
  {
    "type": "vcs",
    "url": "https://github.com/guzzle/guzzle.git"
  }
]

另一个想法是使用 inline aliases ,如:

"guzzlehttp/guzzle": "dev-5.3.0 as 5.0.3"

但是经过这种测试后它无论如何都没有按预期工作,但也许有办法。

相关GitHub主题:How to replace the 3rd party dependency?