我对上游库PR进行了改进(guzzlehttp/psr-7尚未合并),这是我依赖的另一个软件包spatie/crawler的依赖。
要强制Composer使用我的软件包而不是上游软件包,我尝试了以下操作:
我branched进入库的分支(分支名称:cache-to-string
)并更新了其composer.json
:
"name": "benmorel/guzzle-psr7",
"replace": {
"guzzlehttp/psr7": "1.6.*"
}
我更新了项目的composer.json
来使用我的fork:
"repositories": [
{
"type": "vcs",
"url": "https://github.com/BenMorel/psr7"
}
],
"require": {
"benmorel/guzzle-psr7": "dev-cache-to-string"
}
然后运行composer update
,它失败并显示以下错误:
您的要求无法解决为一组可安装的软件包。
问题1
- 在任何版本中都找不到所请求的软件包benmorel / guzzle-psr7,软件包名称中可能有错字。
如何解决此问题?
答案 0 :(得分:1)
您无需在fork中更改软件包名称。您根本不需要更改叉子的'Mozilla/5.0'
。您所需要做的就是将fork添加到存储库部分,并更改所需软件包的约束以使用dev分支:
composer.json
Composer将从存储库中按版本覆盖原始"repositories": [
{
"type": "vcs",
"url": "https://github.com/BenMorel/psr7"
}
],
"require": {
"guzzlehttp/psr7": "dev-cache-to-string as 1.6.1"
}
软件包。
如果某些其他软件包需要guzzlehttp/psr7
-guzzlehttp/psr7
与dev-cache-to-string
不匹配,则可能需要为分支使用别名。如果您使用^1.4
作为约束,则您的分支将被检测为dev-cache-to-string as 1.6.1
版本。