如何在 Composer 中使用替代存储库作为依赖项的依赖项?

how to use a substitute repository for a dependency's dependency in Composer?

这是我的composer.json:

{
    "require": {
        "spipu/html2pdf": "dev-master"
    }
}

现在,spipu/html2pdf 依赖于 tecnickcom/TCPDF,但我想用 patch-1 branch of divinity76/TCPDF 代替 tecnickcom/TCPDF,我该怎么做?

(问题是:tecnickcom/TCPDF 中存在 unicode 错误?限制?,因此无法生成具有 unicode 文件名的 PDF 文件,例如 aæøå.pdfi have sent a fix pull request,但它是已经超过 2 个月没有得到上游维护者的回复 :( 我也试过给 tecnickcom 发邮件,但没有回复)

使用 Axalix 在评论中发布的 link,我发现我可以用 composer.json 中的 repositories 属性 替换 1 个存储库,但是,此替代存储库不会加载原始存储库中尚不存在的标签,只会加载分支。然而,spipu/html2pdf 特别需要版本 ~6.2,这使得 composer 拒绝安装任何开发分支...但是使用 as 关键字,我也可以用任何版本替换任何分支,用请记住,这似乎有效:

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/divinity76/TCPDF.git"
        }
    ],
    "require": {
        "spipu/html2pdf": "dev-master",
        "tecnickcom/tcpdf": "dev-patch-1 as 6.2.13"
    }
}

我在这里 http://mnapoli.fr/overriding-dependencies-with-composer/

找到了分支版本替换解决方案(as 关键字)

以及此答案中的存储库替换解决方案:(link由 Axalix 编辑)