it-roy-ru.com

Как удалить неиспользуемые зависимости из композитора?

Я установил пакет с помощью composer, и он установил многие другие пакеты как зависимости.

Теперь я удалил основной пакет с помощью composer remove packageauthor/packagename, но все старые зависимости не были удалены. Я ожидал, что composer очистит и сохранит только те пакеты, которые требуются в соответствии с composer.json и их зависимостями.

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

171
Lorenz Meyer

Правильный способ сделать это:

composer remove jenssegers/mongodb --update-with-dependencies

Я должен признать, что флаг здесь не совсем очевидно относительно того, что он будет делать.

Обновление

composer remove jenssegers/mongodb

Начиная с v1.0.0-beta2--update-with-dependencies является значением по умолчанию и больше не требуется.

321
Denis Pshenov

На самом деле это очень просто.

composer update

сделает все это за вас, но также обновит другие пакеты.

Чтобы удалить пакет без обновления других, укажите этот пакет в команде, например:

composer update monolog/monolog

удалит пакет monolog/monolog.

Тем не менее, могут остаться некоторые пустые папки или файлы, которые не могут быть удалены автоматически, и которые должны быть удалены вручную.

27
Lorenz Meyer

следующие команды будут делать то же самое отлично

rm -rf vendor

composer install 
14
Max Wen

Просто запустите composer install - он сделает так, чтобы ваш каталог vendor отражал зависимости в файле composer.lock.

Другими словами - он удалит любого поставщика, который отсутствует в composer.lock.

Обновите само composer перед запуском этого.

8
Valentas