我想在基于PHP的项目中使用adldap/adldap库。尽管此程序包的维护者尚未将此程序包添加到packagist,但他们包括了composer.json
文件。因此,通常情况下,我只需添加以下我的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,并且作曲家始终认为我需要packagist软件包。 (使事情变得更加复杂的是,packagist软件包是原始项目的分支,并且是不接受上游更改的分支)。有没有办法告诉作曲家更喜欢配置的VCS信息库中的版本?还是我自己卡住了分叉的包装,更改了包装的名称,并将作曲家指向我的叉子? (或other forks之一维护此问题?)
最佳答案
该软件包的问题在于,“ v4.0.4”版本分支不包含composer.json
文件。这意味着Composer无法选择它,并将跳过此分支。
您可能可以使用require内联别名来使其正常工作。
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"
}
}
这将从GitHub中获取
dev-master
的adldap/adldap
版本,并将其别名为4.0.4-dev
。我不知道这是否是个好方法,也许太过骇人听闻,但是它会起作用。
将来:他们应该在其下一个发行版中包含composer.json文件,以便您摆脱内联别名并需要常规版本。
上面的示例使用相同的存储库,但使用不同的分支进行别名。
下一个示例使用具有参考分支(称为补丁)的其他存储库。此仓库/分支用于“代替”原始软件包。 “参考分支”意味着您从分叉的仓库中选择一个分支,并以“ dev-”作为前缀。
composer install
之后,您应该获得adldap / adldap的分叉存储库,而不是来自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
。