我有以下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
答案 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?