Как удалить пакет из Laravel с помощью composer?

402

Как правильно удалить пакет из Laravel 4? Так долго я пытался:

  1. Удалить объявление из composer.json (в разделе «Требуется»)
  2. Удалите все псевдонимы классов из app.php
  3. Удалите все ссылки на пакет из моего кода :-)
  4. Запустить composer update
  5. Запустить composer dump-autoload

Не работает! Я что-то пропустил?

Некоторые пакеты публикуют свою конфигурацию через "artisan config: publish ...". Есть ли способ отменить их публикацию?

igaster
источник

Ответы:

598

Выполнение следующей команды удалит пакет из vendor (или везде, где вы устанавливаете пакеты), composer.json и composer.lock. Измените поставщика / пакет соответственно.

composer remove vendor/package

Очевидно, вам нужно удалить ссылки на этот пакет в вашем приложении.

В настоящее время я использую следующую версию композитора:

Composer version 1.0-dev (7b13507dd4d3b93578af7d83fbf8be0ca686f4b5) 2014-12-11 21:52:29
steadweb
источник
13
А затем запустите, composer updateчтобы удалить папку vendor / package от vendor
Zeshan
11
Обновление @ZeshanKhattak composer обновит все зависимости. Это способ оставить проект в нестабильном состоянии. Не используйте обновление композитора, если вы не хотите обновлять зависимости
zarax
11
composer remove packagename, Он обновляет удаление пакета из composer.json и удаляет папку пакета от поставщика ... laravel - 5.4.24, composer - 1.4.2.
Похоже, что composer автоматически устанавливает недостающие пакеты после запуска composer remove <package>. Во всяком случае, чтобы избежать этого? Использование версии 1.7.2.
Олле Херстедт
это должно быть: composer удалить имя_пакета вместо: composer удалить вендора / пакет, вендор не нужен, так как laravel автоматически проверяет наличие пакетов в каталоге вендора.
Prashant
171

Получилось ... Шаги по удалению пакета из Laravel:

  1. Удалить объявление из composer.json (в разделе «требуют»)
  2. Удалить поставщика услуг из «app / config / app.php» (ссылка в массиве «provider»)
  3. Удалите все псевдонимы классов из "app / config / app.php"
  4. Удалите все ссылки на пакет из вашего кода :-)
  5. Запустите «Обновление композитора вендор / имя пакета». Это удалит папку пакета из папки "vendor" и перестроит карту автозагрузки композитора.
  6. Удалите опубликованные файлы вручную (см. Комментарий от zwacky)

Это удалит папку пакета из папки "Поставщик"

igaster
источник
2
хотя публикация ресурсов / конфигов на самом деле не автоматизированная вещь. я обычно удаляю вручную папки vendor / package в config / или public /.
Цваки
7
теперь laravel должен придумать что-то вроде «удалить пакет <имя-пакета>», чтобы сделать это проще.
Чандан Гупта
19
Проблема с этим решением состоит в том, что оно обновит все другие пакеты, которые могут не соответствовать вашим требованиям.
Тремби
3
(1) и (5) можно заменить бегом composer remove vendor/package, я думаю.
JCarlosR
Спасибо, эта инструкция была полезна для удаления не работающего пакета Igaster / laravel-theme
Jjsg08
59

Выполнение следующей команды

composer remove Vendor/Package Name

Это все. Не нужно обновление композитора. Имя поставщика / пакета - это просто каталог, установленный ранее

Риад Фердоус
источник
1
Я сделал это, и он говорит, что это больше не требуется в composer.json, поэтому «игнорируя»
Sweet Chilly Philly
1
composer remove <packageName>Я думаю, что этот идеально подходит для удаления любых пакетов. Забудьте про Vendor:) Например,composer remove laravel/tinker
Шамсул Худа
43

Обычно composer removeиспользуется как этого достаточно:

$ composer remove vendor/package

но если пакет composer удален, а кеш конфигурации не очищен, вы не можете очистить его, когда вы пытаетесь так

php artisan config:clear

вы можете получить ошибку In ProviderRepository.php line 208:

Класс 'Laracasts \ Flash \ FlashServiceProvider' не найден

это тупик, если вы не собираетесь удалять файлы

$rm bootstrap/cache/config.php

И это Laravel 5.6, о котором я говорю, а не какой-то очень старый материал.

Обычно это происходит при автоматическом развертывании, когда вы копируете файлы нового выпуска поверх старого кеша. Даже если вы очистили кеш перед копированием. Вы получите старый кеш и новый composer.json.

Евгений Афанасьев
источник
2
Я думаю, что это исправлено в 5.7
Евгений Афанасьев
1
С 5.6 мой загрузчик / кеш был пуст. Я забыл, что я изменил путь кеша (config / cache.php)! Удаление файлов в новой папке кеша исправило проблему!
Aine
2
@YevgeniyAfanasyev Это не исправлено Даже в 5.7
Шреянш Панчал
2
Я почти 3 часа потянул за это свои волосы. Я думал, config:clearчто это исправить.
Шреянш Панчал
34

Вы можете удалить любой пакет, просто набрав в терминале команду follwing, и просто удалите провайдеров и псевдонимы, которые вы указали во время установки пакета, если таковые имеются, и обновите композитор,

composer remove vendor/your_package_name
composer update
Шахрух Анвар
источник
1
Иногда, чтобы обновить новые зависимости, вы должны обновить композитора. Я думаю, что это не повредит.
Шахрух Анвар
18

Вы можете сделать любой из следующих двух методов:

  1. Выполнение команды ниже (наиболее рекомендуемый способ удаления вашего пакета без обновления других пакетов)

    $ composer remove vendor/package

  2. Перейдите к файлу composer.json, а затем запустите команду, как показано ниже, она удалит ваш пакет (но он также обновит другие ваши пакеты)

    $ composer update

Прашант Барве
источник
17

Перед удалением пакета из объявления composer.json удалите кеш

php artisan cache:clear  
php artisan config:clear 

Если вы забыли удалить кэш и у вас возникла ошибка класса not found, переустановите пакет, очистите кеш и удалите снова.

Rayees Pk
источник
16

Самый простой и легкий способ

Синтаксис:

composer remove <package>

Пример:

composer remove laravel/tinker
геккон
источник
15

Если вы все еще получаете сообщение об ошибке после выполнения всех вышеперечисленных шагов, перейдите к своим проектам и bootstrap->cache->config.phpудалите записи поставщика и псевдонимы из кэшированного массива вручную.

Ramjith Ap
источник
Это помогло мне.
Питер Гриффин
1
Некоторые поставщики пакетов не отвечают всем требованиям для создания пакета. По этой причине эти поставщики composer remove vendor/packageне могут правильно удалить записи в кэше. Итак, @Ramjith Ap здесь абсолютно прав.
Самрат Хан
12

**

используйте "композитор удалить продавца / пакет"

** Это пример: установить / добавить Pakage

composer require firebear/importexportfree

Uninsall / Удалить

composer remove firebear/importexportfree

Окончательно после удаления:

php -f bin/magento setup:upgrade

php bin/magento setup:static-content:deploy f

php bin/magento indexer:reindex 

php -f bin/magento cache:clean
SUNNETmedia
источник
9

Чтобы удалить пакет с помощью команды composer

composer remove <package>

Чтобы установить пакет с помощью команды composer

composer require <package>

Установить все пакеты, которые упомянуты в composer.json

composer install

Обновить пакеты

composer update

Я использовал их для проекта Laravel

Киран Редди
источник
9

Вы можете удалить любой пакет, введя следующую команду в терминале, и просто удалить провайдеров и псевдонимы, которые вы указали во время установки пакета, и обновить составителя.

composer remove <package_name>
composer update
Маниша
источник
8

Если данные ответы по-прежнему не помогают вам удалить это, попробуйте следующее:

  • Удалите строку вручную requireизcomposer.json

  • Запустить composer update

DonJoe
источник
3

Мы пришли с отличным решением. Это решение практически сделано в Laravel 6. Если вы хотите удалить какой-либо пакет из вашего проекта Laravel, то вы можете легко удалить пакет, выполнив следующие шаги:

Шаг 1: Вы должны знать имя пакета, который хотите удалить. Если вы не знаете полное имя пакета, вы можете открыть папку вашего проекта, перейти к composer.jsonфайлу и проверить имя, требовать массив

"require": {
        "php": "^7.2",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "^6.2",
        "laravel/passport": "^8.3",
        "laravel/tinker": "^2.0"
    },

Предположим, здесь я собираюсь удалить пакет "fideloper / proxy".

Шаг 2 : Откройте командную строку с каталогом корневой папки вашего проекта. Шаг 3: Прежде всего очистите весь кеш, выполнив следующие команды. Запускайте команды одну за другой.введите описание изображения здесь

php artisan cache:clear  
php artisan config:clear 

Шаг 4: Теперь напишите следующую команду, чтобы удалить пакет. Здесь вам нужно изменить имя вашего пакета вместо моего примера пакета.

composer remove fideloper/proxy

Теперь подождите несколько секунд, когда ваша посылка удаляется.

Сумит Кумар Гупта
источник
2
или, composer remove laravel/telescope --devесли это пакет разработчика
Винса
3

Удалить пакет с

composer remove vendorname/packagename

Вы можете проверить удаление пакета из composer.json - docs

Или вы можете удалить имя пакета из composer.jsonфайла и запустить его composer updateиз каталога вашего проекта. Я надеюсь, что это помогает.

Абдалла Рамадан
источник