Composer:如何全局覆盖composer.json的需求?

iti*_*nce 3 php symfony composer-php

TL; DR:

我的项目需要库A,A需要B1.B1坏了但是有一个叉子B2.我希望实现即使A需要B1而不是B2,作曲家也会安装B2而不是B1.

怎么做?

更详细:

在symfony项目中,我们需要以下库:

"require": {
   "emanueleminotto/twig-cache-bundle": "1.0.2",
}
Run Code Online (Sandbox Code Playgroud)

该库需要另一个当前已损坏的库:

"require": {
    "asm89/twig-cache-extension": "^1.3"
},
Run Code Online (Sandbox Code Playgroud)

对于已损坏的库,已存在超过4个月的拉取请求,但维护者拒绝合并它.

我的问题是,如果有可能为子依赖关系覆盖依赖关系,那么总是使用修补的fork而不是原始的fork?

对于asm89/twig-cache-extension存在以下带有修复的fork:https://github.com/blackandred/twig-cache-extension

我试图将这个fork添加到我的composer.json并在"存储库"下明确注册了fork:

"repositories": [
    {
        "type": "git",
        "url": "https://github.com/blackandred/twig-cache-extension"
    }
],
Run Code Online (Sandbox Code Playgroud)

并在我的composer-json中添加了依赖项,并将更改后的版本添加到"dev-master":

"require": {
    "asm89/twig-cache-extension": "dev-master",
    "emanueleminotto/twig-cache-bundle": "1.0.2",
}
Run Code Online (Sandbox Code Playgroud)

但是由于emanueleminotto/twig-cache-bundle仍然需要原始库,因此composer忽略fork并安装原始库.

我能在这做什么吗?

Ale*_*lex 6

我相信文档在这种情况下有一个很好的例子.

基本上你需要在composer.json中定义一个别名,如下所示:

"require": {
    "asm89/twig-cache-extension": "dev-master  as 1.3",
    "emanueleminotto/twig-cache-bundle": "1.0.2",
}
Run Code Online (Sandbox Code Playgroud)

提问者添加:

仍然缺少一步: "composer update asm89/twig-cache-extension"