2013-08-29 2 views
0

У меня есть три отдельных проекта (скажем, P1, P2 и P3), каждый с настройкой композитора.Композитор - Множественные зависимости Выпуск

P1 требует, чтобы часть P2 и P2 требовала часть P3, что в свою очередь заставляет композитор в пределах P1 заставлять меня требовать P3. Есть ли способ удалить эту зависимость, поскольку ни один из кода в P3 не нужен P1? Помимо удаления его вне композитора.

Я попытался установить P3, как require-dev в файле P1 композитора, а затем установив --no-dev флаг, когда composer install/update запускается, но он по-прежнему добавления поставщика, я полагаю, из-за потребности в Р2.

ответ

0

Вы не можете обойти, что P3 появляется в каталоге поставщика P1. Так работает композитор.

Возможно, части P2, которые используются P1, не используют ничего, что находится внутри P3, но это не имеет значения. Пока P2 заявляет, что для работы P3 требуется, любой проект, требующий P2, также будет включать P3.

Интересно, почему вы заявляете, что вынуждены требовать P3. Единственная причина, которая могла бы быть правдой, это то, что вы также называете репозитории, у которых есть код, потому что вы не хотите публиковать их через packagist.org.

Но это только половина правды. Вам не нужно требовать P3 - вам нужно указать только все репозитории, которые содержат весь код, который в конечном итоге требуется.

Если вы хотите избавиться от включения огромных списков частных репозиториев с вашими библиотечными модулями, я бы посоветовал вам взглянуть на Satis. Это скрипт, который может создать список пакетов всех ваших репозиториев, а затем вам нужно будет только указать местоположение созданного файла package.json, а не каждый репозиторий, который вы можете использовать. Однако вы должны подумать о том, как добавить новые репозитории в Satis, но вам нужно будет сделать это только один раз и только там.

+0

Спасибо за отзыв. Они действительно все частные проекты, загруженные через git, и их публикация не является вариантом. Мы должны требовать все проекты, поскольку в настоящее время нам приходится загружать репозитории через dev-master, поскольку композитор не поддерживает соглашение об именах тегов, которое ранее было включено в проекты ('vX.Y.Z-releaseasename'). – user1656435

+0

Composer поддерживает 'vX.YZ' как имя тега, вам просто нужно отказаться от этого суффикса' -releasename', потому что это используется для таких вещей, как 'alpha',' beta' или 'RC' тегирование почти выпусков готовые версии. – Sven

Смежные вопросы