TL; DR:
我的项目需要库A,A需要B1 . B1坏了但是有一个叉子B2 . 我想实现即使A需要B1而不是B2,作曲家也会安装B2而不是B1 .
怎么做?
更详细:
在symfony项目中,我们需要以下库:
"require": {
"emanueleminotto/twig-cache-bundle": "1.0.2",
}
这个库requires itself另一个目前被破坏的库:
"require": {
"asm89/twig-cache-extension": "^1.3"
},
对于破坏的库已经存在了超过4个月的pull request但是维护者拒绝合并它 .
我的问题是,如果有可能为子依赖关系覆盖依赖关系,那么总是使用修补的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"
}
],
并在我的composer-json中添加了依赖项,并将更改后的版本添加到“dev-master”:
"require": {
"asm89/twig-cache-extension": "dev-master",
"emanueleminotto/twig-cache-bundle": "1.0.2",
}
但是由于emanueleminotto / twig-cache-bundle仍然需要原始库,因此composer忽略fork并安装原始库 .
我能在这做什么吗?
2 回答
我认为这个方案的文档有good example .
基本上你需要在composer.json中定义一个别名,如下所示:
提问者添加:
仍然缺少一步:
"composer update asm89/twig-cache-extension"
将replace部分添加到fork的
composer.json
中: