Композитор: предпочитаю хранилище VCS над Packagist

Я хотел бы использовать 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? Или я застрял, раздувая пакет сам, меняя его имя и указывая композитору на мою вилку? (или один из другие вилки поддерживал, чтобы обойти эту самую проблему?)

2

Решение

Проблема с этим пакетом в том, что ветка версии «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,

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]