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


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

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

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

Спасибо!

Author: pthurmond, 2013-07-08

2 answers

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

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

Пример, когда кто-то исправил Монолог. Затем они говорят композитору использовать их хранилище.

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

Composer отсканирует все версии, доступные в https://github.com/igorw/monolog, и предпочтет их версии Монолога, доступной на Packagist.

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

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

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

 8
Author: Danack, 2013-07-09 13:40:23

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

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

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

 1
Author: Sven, 2013-07-08 19:15:27