作曲家:如何在全球范围内覆盖Composer.json的要求



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" 
    } 
}

相关内容

  • 没有找到相关文章

最新更新