gpt4 book ai didi

php - Composer : Prefer VCS Repository over Packagist

转载 作者:行者123 更新时间:2023-12-02 13:01:30 26 4
gpt4 key购买 nike

我想使用 adldap/adldap我的基于 PHP 的项目中的库。虽然此包的维护者尚未将此包添加到 packagist,但他们已包含一个 composer.json 文件。因此,通常情况下,我只需添加以下内容即可开始我的一天。

"repositories": [
{
"type": "vcs",
"url": "https://github.com/adldap/adLDAP"
}],

"require": {
/* my other packages */
"adldap/adldap":"4.04"
},

但是,这不会起作用,因为 adldap/adldap 已被声明 by a different project in packagist ,并且 Composer 总是假设我想要 packagist 包。 (让事情变得更加复杂的是,packagist 包是原始项目的一个分支,并且是一个不接受上游更改的分支)。

有没有办法告诉 Composer 更喜欢已配置的 VCS 存储库中的版本?或者我是否必须自己 fork 软件包,更改其名称,并将 Composer 指向我的 fork ? (或者为解决这个问题而维护的 other forks 之一?)

最佳答案

这个包的问题是,“v4.0.4”版本分支不包含 composer.json文件。这意味着 Composer 无法拾取它并会跳过此分支。

您可能可以使用需要内联别名来使其正常工作。 https://getcomposer.org/doc/articles/aliases.md#require-inline-alias

{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/adldap/adLDAP"
}
],
"require": {
"adldap/adldap": "dev-master as 4.0.4-dev"
}
}

这将获取 dev-master adldap/adldap 的版本来自 GitHub 并将其别名为 4.0.4-dev .

我不知道这是否是一个好方法,也许太hackish,但它会起作用。

将来:他们应该在下一个版本中包含composer.json 文件,以便您可以摆脱内联别名并需要普通版本。


上面的示例使用相同的存储库,但使用不同的别名分支。下一个示例使用不同的存储库,带有引用分支(称为补丁)。此存储库/分支用于“代替”原始包。 “引用分支”意味着您从 fork 的存储库中选择一个分支,并在其前面加上“dev-”前缀。经过composer install ,您应该获取 adldap/adldap 的 fork 存储库,而不是来自 packagist 的存储库。

{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/repo-of-the-fork/adldap"
}
],
"require": {
"adldap/adldap": "dev-patch"
}
}

虽然这可能会独立解决,但当其他软件包依赖于特定版本的 adldap 时,它可能无法解决。为了解决这个问题,你可以再次使用“内联别名”技巧:dev-patch as 4.0.4-dev .

关于php - Composer : Prefer VCS Repository over Packagist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29396915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com