tl; dr:
我的项目需要图书馆A,A需要B1。B1被打破,但有一个叉子B2。我想实现该作曲家,即使A需要B1而不是B2。
如何做?
更多详细:
在一个Symfony项目中,我们需要以下库:
"require": {
"emanueleminotto/twig-cache-bundle": "1.0.2",
}
此库要求自己当前已损坏的另一个库:
"require": {
"asm89/twig-cache-extension": "^1.3"
},
对于破碎的图书馆而存在已有4个月以上的拉动请求,但维护者拒绝合并。
我的问题是,如果有可能覆盖亚依赖性的依赖项,那么始终将使用修补的叉子代替原始叉子?
对于asm89/twig-cache-extension存在以下叉子,带有修复程序:https://github.com/blackandred/twig-cache-extension
我尝试将此叉添加到我的composer.json,并在"存储库"下明确注册了叉子:
"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 仍然需要原始库,因此作曲家忽略了叉子并安装了原始图书馆。
我可以在这里做什么?
我相信文档在这种情况下有一个很好的例子。
基本上,您需要在作曲家中定义一个别名。JSON如下:
"require": {
"asm89/twig-cache-extension": "dev-master as 1.3",
"emanueleminotto/twig-cache-bundle": "1.0.2",
}
由发问者添加:
仍然缺少一个步骤:"composer update asm89/twig-cache-extension"
将replace
截面添加到叉子的composer.json
中:
{
"replace": {
"asm89/twig-cache-extension": "self.version"
}
}