Как стать автором
Обновить

Как через composer удобно подменить системный пакет его альтернативной версией

Время на прочтение2 мин
Количество просмотров8.3K
В любом большом проекте, где используется composer, рано или поздно возникает одна проблема. Во фреймворке, или в каком-то его отдельном пакете исправляют ошибку или добавляют функциональность, а разработчик не спешит принимать pull request. При этом хочется временно использовать обновленный пакет, а потом, когда pull request все-таки примут, вернуться к официальной версии. Ситуация также осложняется тем, что пакет может быть указан в зависимостях других пакетов.

Я сам столкнулся с этой проблемой: в yii/yii2-elasticsearch нет поддержки scroll API, а она мне нужна. При этом соответствующий pull request висит с октября 2015 года. Естественно, я задался вопросом: как бы поудобнее временно подключить к своему проекту версию пакета, где реализована нужная функциональность? При этом я понимаю, что рано или поздно этот pull request все-таки примут, и придется переключаться обратно.

UPDATE: Как оказалось, все уже решено и подробно описано в документации.

1. Сделать fork нужной версии пакета. В моем случае, я ответвился от 13leaf/yii2-elasticsearch. Появился пакет beowulfenator/yii2-elasticsearch. В пакете создать новую ветку, например, bugfix.

2. В composer.json проекта поменять версию пакета. К названию ветки добавить dev-:

"yiisoft/yii2-elasticsearch":"dev-bugfix"

3. Указать в composer.json проекта ссылку на репозиторий:

"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/beowulfenator/yii2-elasticsearch.git"
    }
]

После этого достаточно выполнить composer update, и теперь вместо официального пакета будет использоваться наш собственный.
Важно, чтобы в нашем экземпляре пакета в файле composer.json в поле name было указано «yiisoft/yii2-elasticsearch». Поскольку репозитории, указанные явно, имеют больший приоритет, чем packagist, composer поставит наш пакет вместо официального.
Когда же разработчики все-таки примут pull request, достаточно будет отменить изменения в composer.json.
Теги:
Хабы:
Всего голосов 21: ↑18 и ↓3+15
Комментарии4

Публикации

Истории

Работа

PHP программист
125 вакансий

Ближайшие события

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область