Ala*_*orm 2 php github composer-php packagist
我想在我的基于PHP的项目中使用adldap/adldap库.虽然此软件包的维护者尚未将此软件包添加到packagist,但它们已包含一个composer.json
文件.所以,通常情况下,我只是添加以下我的MY composer.json
,并开始我的一天.
"repositories": [
{
"type": "vcs",
"url": "https://github.com/adldap/adLDAP"
}],
"require": {
/* my other packages */
"adldap/adldap":"4.04"
},
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用,因为adldap/adldap
已经由packagist中的另一个项目声明,并且作曲家总是假设我想要packagist包.(使事情变得更复杂,packagist包是原始项目的一个分支,以及一个不接受上游更改的fork).
有没有办法告诉编写者更喜欢配置的VCS存储库中的版本?或者我是不是自己动了包裹,改名,然后把作曲家指向我的叉子?(或者其他一个叉子是否可以解决这个问题呢?)
该软件包的问题在于,"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"
}
}
Run Code Online (Sandbox Code Playgroud)
这将从GitHub 获取dev-master
版本adldap/adldap
并将其别名4.0.4-dev
.
我不知道这是不是一个好方法,也许太过于hackish,但它会起作用.
将来:他们应该在下一个版本中包含composer.json文件,以便您可以删除内联别名并要求正常版本.
上面的示例使用相同的repo,但使用不同的分支进行别名.下一个示例使用不同的repo,带有引用分支(称为patch).此repo/branch用于"替代"原始包."参考分支"表示您从分叉仓库中选择一个分支,并在其前面添加"dev-".在a之后composer install
,你应该得到adldap/adldap的分叉回购,而不是packagist的回购.
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/repo-of-the-fork/adldap"
}
],
"require": {
"adldap/adldap": "dev-patch"
}
}
Run Code Online (Sandbox Code Playgroud)
虽然这可能会独立解决,但当其他软件包依赖特定版本的adldap时,它可能无法解决.要解决此问题,您可以再次使用"内联别名"技巧:dev-patch as 4.0.4-dev
.