Блокировка установки пакета в PHP Composer для использования форка пакета

Я работаю с Behat и Composer над проектом на работе. Мне пришлось создать ответвление и патч для Mink и драйвера Mink Selenium 2 для обработки всплывающих окон. В настоящее время исправления все еще проверяются теми, кто управляет репозиториями, которые я разветвил. Так что тем временем я хотел бы вместо этого использовать свои форк-версии.

Я добавил свои репозитории в композитор, и они загружаются. Однако пакет «behat/mink» все еще устанавливается, потому что этого требует «behat/mink-extension». Дело в том, что он может использовать и мою вилку. Поэтому я хотел бы, чтобы он загружал только мой, а не пакет «behat/mink».

Я могу это сделать? Могу ли я заблокировать требуемый пакет пакета в пользу моего форка?

Спасибо!


person Patrick    schedule 08.07.2013    source источник


Ответы (2)


Да, все, что вам нужно сделать, это указать свой форк в качестве репозитория для использования, и Composer автоматически включит форк вместо исходного пакета. Из документации

Если вы используете определенную библиотеку для своего проекта и решили что-то изменить в библиотеке, вы захотите, чтобы ваш проект использовал исправленную версию. Если библиотека находится на GitHub (в большинстве случаев это так), вы можете просто разветвить ее там и отправить свои изменения в свою вилку. После этого вы обновляете composer.json проекта. Все, что вам нужно сделать, это добавить свою ветку в качестве репозитория и обновить ограничение версии, чтобы оно указывало на вашу пользовательскую ветку.

Пример, когда кто-то пропатчил Monolog. Затем они говорят Composer использовать их репозиторий.

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/igorw/monolog"
        }
    ],
    "require": {
        "monolog/monolog": "dev-bugfix"
    }
}

Composer будет сканировать все версии, доступные в https://github.com/igorw/monolog, и использовать их вместо версии Monolog, доступной на Packagist.

Вы также можете указать Composer использовать локальные каталоги, а не HTTP-адрес.

"repositories": [
        {
            "type": "vcs",
            "url": "/documents/project/igorw/monolog"
        }
    ],

Это позволяет вам разрабатывать библиотеку, использовать ее в другом проекте и тестировать без необходимости отправлять ее на Github между каждым редактированием и тестированием.

person Danack    schedule 09.07.2013
comment
Когда я первоначально читал эту документацию, у меня были проблемы с ее выполнением. Но после прочтения этой статьи: en.mnapoli.fr/overriding-dependencies-with-composer Наконец-то я понял это. - person Patrick; 09.07.2013

Вы не можете действительно заблокировать их. Возможно, вы сможете отключить получение информации с сайта packagist.org, но это повлияет на все пакеты.

Что вам нужно сделать, так это добавить псевдоним для behat/mink. См. документацию псевдонимов композитора.

Старайтесь избегать псевдонимов веток, используйте встроенный псевдоним.

person Sven    schedule 08.07.2013