Як видалити пакет з Laravel за допомогою композитора?


402

Який правильний спосіб видалити пакет із Laravel 4? Так довго я намагався:

  1. Видалити декларацію з composer.json(у розділі "вимагати")
  2. Видаліть будь-які псевдоніми класів із app.php
  3. Видаліть будь-які посилання на пакет із мого коду :-)
  4. Біжи composer update
  5. Біжи composer dump-autoload

Не працює! Я щось пропускаю?

Деякі пакети публікують свою конфігурацію через "artisan config: публікувати ...". Чи є спосіб їх "скасувати публікацію"?

Відповіді:


594

Виконавши наступну команду, вилучите пакунок від постачальника (або де б ви не встановили пакунки), composer.json та composer.lock. Змініть постачальника / пакета відповідним чином.

composer remove vendor/package

Очевидно, вам потрібно буде видалити посилання на цей пакет у вашій програмі.

Наразі я виконую наступну версію композитора:

Composer version 1.0-dev (7b13507dd4d3b93578af7d83fbf8be0ca686f4b5) 2014-12-11 21:52:29

13
А потім запустіть, composer updateщоб видалити папку постачальника / пакета від постачальника
Зешан

11
Оновлення композитора @ZeshanKhattak оновить усі залежності. Це дозволяє залишити проект у нестабільному стані. Не використовуйте оновлення композитора, якщо ви не хочете оновлювати залежності
zarax

11
composer remove packagename, Він оновлює видалення пакета з composer.json і видаляє папку пакунка від постачальника ... laravel - 5.4.24, композитор - 1.4.2.

Схоже, композитор автоматично встановлює відсутні пакети після запуску composer remove <package>. У будь-якому випадку цього уникати? Використання версії 1.7.2.
Olle Härstedt

це повинно бути: composer видалити package_name замість цього: composer Remove vendor / package Не потрібно потреби постачальника, оскільки laravel автоматично перевіряє пакунки пакунків у каталозі постачальників.
Prashant

171

Робота працює ... Етапи видалення пакета з Laravel:

  1. Видалити декларацію з composer.json (у розділі "вимагати")
  2. Видаліть постачальника послуг з "app / config / app.php" (посилання в масиві "провайдерів")
  3. Видаліть будь-які псевдоніми класу з "app / config / app.php"
  4. Видаліть зі свого коду будь-які посилання на пакет :-)
  5. Запустіть "постачальник оновлення композитора / ім'я пакета". Це видалить папку пакета з папки "постачальник" і відновить карту автозавантаження композитора.
  6. Видалити файли вручну (читати коментар zwacky)

Це видалить папку пакета із папки "Постачальник"


2
хоча видалення активів / конфігурацій насправді не є автоматизованою справою. Я зазвичай видаляю папки постачальника / пакета в конфігураційному режимі / або загальнодоступному /
zwacky

7
тепер laravel повинен придумати щось на кшталт "видалити пакет <ім'я пакета>", щоб зробити його простіше.
Чандан Гупта

19
Проблема з цим рішенням полягає в тому, що він буде оновлювати всі інші пакети, які можуть бути не такими, які ви хочете.
тремтіння

3
(1) і (5) composer remove vendor/package, я думаю, можна замінити бігом .
JCarlosR

Дякую, ці інструкції були корисними для видалення непрацюючого пакета Igaster / laravel-тема
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

але якщо пакет композитора вилучено, а кеш конфігурації не очищено, ви не можете його очистити, коли ви намагаєтесь так

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)! Видалення файлів у новій папці кешу вирішило проблему!
Айна

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 

Якщо ви забули видалити кеш, і ви отримаєте помилку класу не знайдено, то перевстановіть пакет і очистіть кеш і видаліть знову.


16

Найпростіший і найпростіший спосіб

Синтаксис:

composer remove <package>

Приклад:

composer remove laravel/tinker

15

Якщо ви все-таки отримуєте помилку після виконання всіх вищезазначених кроків, перейдіть до своїх проектів, bootstrap->cache->config.phpвидаліть записи постачальника та псевдоніми з кешованого масиву вручну.


Це мені допомогло.
Пітер Гріффін

1
Деякі постачальники пакетів не відповідають усім вимогам для створення пакету. З цієї причини ці постачальники composer remove vendor/packageне змогли належним чином видалити записи кеша. Отже, @Ramjith Ap тут абсолютно правильний.
Самрат Хан

12

**

використовувати "Вилучити постачальника / пакет".

** Це приклад: Встановити / Додати пакунок

composer require firebear/importexportfree

Видалення / видалення

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

9

Щоб видалити пакет за допомогою команди композитора

composer remove <package>

Щоб встановити пакет за допомогою команди композитора

composer require <package>

Щоб встановити всі пакунки, які згадуються в composer.json

composer install

Оновлення пакетів

composer update

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


9

Ви можете видалити будь-який пакет, ввівши наступну команду в терміналі, а також просто видаліть постачальників та псевдонімів, які ви надали під час встановлення пакета та оновити композитора

composer remove <package_name>
composer update

8

Якщо наведені відповіді все ж не допоможуть вам усунути це, спробуйте:

  • Видаліть рядок вручну requireзcomposer.json

  • Біжи composer update


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якщо це пакет для розробників
vinsa

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.