Я хотел бы использовать adldap / adldap библиотека в моем проекте на основе PHP. Хотя сопровождающий этого пакета не добавил этот пакет в каталог, он включил composer.json
файл. Так что, как правило, я бы просто добавил следующее мой MY composer.json
и идти о моем дне.
"repositories": [
{
"type": "vcs",
"url": "https://github.com/adldap/adLDAP"}],
"require": {
/* my other packages */
"adldap/adldap":"4.04"},
Однако это не сработает, потому что adldap/adldap
уже заявлено другим проектом в Packagist, и композитор всегда предполагает, что я хочу упаковку. (Что еще более усложняет, пакет packagist — это форк оригинального проекта и форк, который не принимает исходные изменения).
Есть ли способ сказать композитору предпочитать версию из настроенного хранилища VCS? Или я застрял, раздувая пакет сам, меняя его имя и указывая композитору на мою вилку? (или один из другие вилки поддерживал, чтобы обойти эту самую проблему?)
Проблема с этим пакетом в том, что ветка версии «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
,
Я не знаю, если это хороший способ, может быть, слишком хакерский, но это сработает.
В будущем: они должны включить файл 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. Чтобы решить эту проблему, вы можете снова использовать трюк «inline alias»: dev-patch as 4.0.4-dev
,
Других решений пока нет …