无法用Composer替换软件包

时间:2019-08-06 15:58:51

标签: composer-php

我对上游库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,软件包名称中可能有错字。
  •   

如何解决此问题?

1 个答案:

答案 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/psr7dev-cache-to-string不匹配,则可能需要为分支使用别名。如果您使用^1.4作为约束,则您的分支将被检测为dev-cache-to-string as 1.6.1版本。