Как удалить пакет из Laravel с помощью PHP Composer?
Как правильно удалить пакет из Laravel с помощью PHP Composer?
Я попробовал следующее:
- Удалил запись из файла composer.json (в секции "require")
- Удалил любые псевдонимы классов из файла app.php
- Убрал все ссылки на пакет из моего кода :-)
- Выполнил команду
composer update
- Выполнил команду
composer dump-autoload
Ни один из этих шагов не сработал! Что я упустил?
5 ответ(ов)
Composer 1.x и 2.x
Запустив следующую команду, вы удалите пакет из директории vendor (или откуда вы устанавливаете пакеты), а также из файлов composer.json и composer.lock. Не забудьте заменить vendor/package
на имя нужного вам пакета.
composer remove vendor/package
Очевидно, вам также нужно будет удалить ссылки на этот пакет внутри вашего приложения.
На данный момент я использую следующую версию Composer:
Composer version 1.0-dev (7b13507dd4d3b93578af7d83fbf8be0ca686f4b5) 2014-12-11 21:52:29
Документация
https://getcomposer.org/doc/03-cli.md#remove-rm-uninstall
Обновления
- 18/10/2024 - Обновлена ссылка на документацию
remove-rm-uninstall
- 27/12/2023 - Исправлена ссылка на документацию
remove-rm
- 26/10/2020 - Обновлен ответ, чтобы подтвердить, что команда работает как для v1.x, так и для v2.x Composer
Обычно команда composer remove
используется так:
composer remove vendor/package
Однако если пакет Composer был удалён, а кэш "config" не очищен, устранить проблему не получится. При попытке выполнить команду, например:
php artisan config:clear
вы можете получить ошибку In ProviderRepository.php line 208:
Class 'Laracasts\Flash\FlashServiceProvider' not found
Это тупик, если не удалить файлы вручную:
Для Laravel 5.6:
rm bootstrap/cache/config.php
Для Laravel 9:
rm bootstrap/cache/packages.php
Это часто случается в автоматизированных развертываниях, когда вы копируете файлы новой версии поверх старого кэша. Даже если вы очистили кэш перед копированием, в результате у вас останется старый кэш и новый файл composer.json.
Вы можете удалить любой пакет, просто выполнив следующую команду в терминале. Если вы указывали провайдеры и алиасы при установке пакета, просто удалите их, а затем обновите Composer:
composer remove vendor/your_package_name
composer update
Если вы хотите удалить пакет с помощью Composer в Laravel, вы можете использовать команду:
composer remove package/name
В вашем случае, например, для удаления пакета mckenziearts/laravel-notify
, команда будет выглядеть так:
composer remove mckenziearts/laravel-notify
После этого рекомендуется очистить кеш и оптимизировать ваше приложение с помощью команды:
php artisan optimize:clear
Эти команды успешно работают в Laravel 8.
Вы можете воспользоваться одним из двух методов:
Выполните команду ниже (это наиболее рекомендованный способ удалить ваш пакет, не обновляя другие пакеты):
$ composer remove vendor/package
Перейдите в файл
composer.json
и выполните команду ниже, чтобы удалить ваш пакет (но это также обновит ваши другие пакеты):$ composer update
Также следует выполнить эту команду для очистки кэша, конфигураций и т.д.:
$ php artisan optimize:clear
Как вывести сырой SQL-запрос в виде строки из билдера запросов?
Как вывести ошибки PHP на экран?
Функции startsWith() и endsWith() в PHP
Что такое потокобезопасность и непотокобезопасность в PHP?
Как получить расширение файла в PHP?