Jak usunąć pakiet z Laravela za pomocą kompozytora?

402

Jaki jest właściwy sposób na usunięcie pakietu z Laravel 4? Tak długo próbowałem:

  1. Usuń deklarację z composer.json(w sekcji „wymagaj”)
  2. Usuń wszystkie aliasy klas z app.php
  3. Usuń wszelkie odniesienia do paczki z mojego kodu :-)
  4. Biegać composer update
  5. Biegać composer dump-autoload

Nie działa! Czy coś brakuje?

Niektóre pakiety publikują konfigurację za pomocą „konfiguracji rzemieślnika: opublikuj ...”. Czy istnieje sposób ich „cofnięcia publikacji”?

igaster
źródło

Odpowiedzi:

594

Uruchomienie następującego polecenia spowoduje usunięcie pakietu od dostawcy (lub gdziekolwiek instalujesz pakiety), composer.json i composer.lock. Zmień odpowiednio dostawcę / paczkę.

composer remove vendor/package

Oczywiście musisz usunąć odniesienia do tego pakietu w swojej aplikacji.

Obecnie korzystam z następującej wersji kompozytora:

Composer version 1.0-dev (7b13507dd4d3b93578af7d83fbf8be0ca686f4b5) 2014-12-11 21:52:29
steadweb
źródło
13
A następnie uruchom, composer updateaby usunąć folder dostawcy / pakietu od dostawcy
Zeshan
11
Aktualizacja kompozytora ZeshanKhattak zaktualizuje wszystkie zależności. W ten sposób projekt pozostaje w niestabilnym stanie. Nie używaj aktualizacji kompozytora, chyba że chcesz zaktualizować zależności
zarax
11
composer remove packagename, Aktualizuje usuwanie pakietu z composer.json i usuwa folder pakietu od dostawcy ... laravel - 5.4.24, kompozytor - 1.4.2.
Wygląda na to, że kompozytor automatycznie instaluje brakujące pakiety po uruchomieniu composer remove <package>. W każdym razie, aby tego uniknąć? Korzystanie z wersji 1.7.2.
Olle Härstedt
powinno to być: kompozytor usuń zamiast tego nazwę_pakietu: kompozytor usuń sprzedawcę / pakiet nie jest potrzebny dostawca, ponieważ laravel automatycznie sprawdza pakiety w katalogu dostawcy.
prashant
171

Mam działające ... Kroki, aby usunąć pakiet z Laravel to:

  1. Usuń deklarację z composer.json (w sekcji „wymagają”)
  2. Usuń usługodawcę z „app / config / app.php” (odwołanie w tablicy „dostawców”)
  3. Usuń wszelkie aliasy klas z „app / config / app.php”
  4. Usuń wszelkie odniesienia do paczki z kodu :-)
  5. Uruchom „dostawcę aktualizacji kompozytora / nazwa-pakietu”. Spowoduje to usunięcie folderu pakietu z folderu „vendor” i przebuduje mapę autoloadowania kompozytora.
  6. Ręcznie usuń opublikowane pliki (przeczytaj komentarz zwacky)

Spowoduje to usunięcie folderu pakietu z folderu „Dostawca”

igaster
źródło
2
chociaż cofnięcie publikacji zasobów / konfiguracji nie jest tak naprawdę zautomatyzowane. Zazwyczaj ręcznie usuwam foldery dostawcy / pakietu w config / lub public /.
zwacky
7
teraz laravel powinien wymyślić coś takiego: „usuń paczkę <nazwa_pakietu>”, aby to ułatwić.
Chandan Gupta
19
Problem z tym rozwiązaniem polega na tym, że zaktualizuje on wszystkie inne pakiety, co może nie być tym, czego chcesz.
tremby
3
composer remove vendor/packageMyślę, że (1) i (5) można zastąpić bieganiem .
JCarlosR
Dziękujemy, ta instrukcja była przydatna do usunięcia niedziałającego pakietu motywu Igaster / laravel
Jjsg08,
59

Uruchom następujące polecenie

composer remove Vendor/Package Name

To wszystko. Nie wymaga aktualizacji kompozytora. Nazwa dostawcy / paczki to katalog, który został zainstalowany wcześniej

Riaj Ferdous
źródło
1
Zrobiłem to i mówi, że jej już nie potrzebuje w composer.json tak „ignorowanie”
Słodka Chilly Philly
1
composer remove <packageName>Myślę, że ten jest idealny do usuwania wszelkich pakietów. Zapomnij o Vendor:) Na przykładcomposer remove laravel/tinker
Shamsul Huda
43

Zwykle composer removeużywane w ten sposób wystarczy:

$ composer remove vendor/package

ale jeśli pakiet kompozytora zostanie usunięty, a pamięć podręczna konfiguracji nie zostanie wyczyszczona, nie będzie można jej wyczyścić, gdy spróbujesz

php artisan config:clear

możesz otrzymać błąd In ProviderRepository.php line 208:

Nie znaleziono klasy „Laracasts \ Flash \ FlashServiceProvider”

jest to ślepy zaułek, chyba że usuniesz pliki

$rm bootstrap/cache/config.php

I to jest Laravel 5.6, o którym mówię, a nie jakieś bardzo stare rzeczy.

Zdarza się to zwykle podczas automatycznego wdrażania, gdy kopiujesz pliki nowej wersji na starą pamięć podręczną. Nawet jeśli wyczyścisz pamięć podręczną przed kopiowaniem. Skończysz ze starą pamięcią podręczną i nowym plikiem composer.json.

Jewgienij Afanasiew
źródło
2
Myślę, że jest to naprawione w 5.7
Jewgienij Afanasyjew
1
W wersji 5.6 mój bootstrap / cache był pusty. Zapomniałem, że zmieniłem ścieżkę pamięci podręcznej (config / cache.php)! Usunięcie plików z nowego folderu pamięci podręcznej rozwiązało problem!
Aine
2
@YevgeniyAfanasyev To nie jest naprawione Nawet w 5.7
Shreyansh Panchal
2
Prawie spędziłem 3 godziny na ciągnięciu za to włosów. Myślałem, że config:clearto naprawię.
Shreyansh Panchal
34

możesz usunąć dowolny pakiet, wpisując następujące polecenie w terminalu, i po prostu usuń dostawców i alias podany podczas instalacji pakietu, jeśli takie istnieją, i zaktualizuj kompozytora,

composer remove vendor/your_package_name
composer update
Shahrukh Anwar
źródło
1
Czasami, aby zaktualizować nowe zależności, musisz zaktualizować kompozytora. Myślę, że nie ma nic złego w prowadzeniu tego.
Shahrukh Anwar
18

Możesz wykonać jedną z dwóch poniższych metod:

  1. Uruchomienie poniższego polecenia (najbardziej zalecany sposób na usunięcie pakietu bez aktualizacji innych pakietów)

    $ composer remove vendor/package

  2. Przejdź do pliku composer.json, a następnie uruchom polecenie jak poniżej, aby usunąć pakiet (ale zaktualizuje również inne pakiety)

    $ composer update

Prashant Barve
źródło
17

Przed usunięciem pakietu z deklaracji composer.json usuń pamięć podręczną

php artisan cache:clear  
php artisan config:clear 

Jeśli zapomnisz usunąć pamięć podręczną i pojawi się błąd „nie znaleziono klasy”, zainstaluj ponownie pakiet, wyczyść pamięć podręczną i usuń ponownie.

Rayees Pk
źródło
16

Najprostszy i najłatwiejszy sposób

Składnia:

composer remove <package>

Przykład:

composer remove laravel/tinker
gekon
źródło
15

Jeśli po wykonaniu wszystkich powyższych kroków nadal pojawia się błąd, przejdź do swoich projektów bootstrap->cache->config.phpręcznie usuń wpisy dostawcy i aliasy z tablicy buforowanej.

Ramjith Ap
źródło
To mi pomogło.
Peter Griffin
1
Niektórzy dostawcy pakietów nie spełniają wszystkich wymagań, aby utworzyć pakiet. Z tego powodu ci dostawcy composer remove vendor/packagenie mogą poprawnie usunąć wpisów w pamięci podręcznej. Więc @Ramjith Ap ma tutaj absolutną rację.
Samrat Khan,
12

**

użyj „kompozytora usuń dostawcę / pakiet”

** To jest przykład: Zainstaluj / dodaj pakiet

composer require firebear/importexportfree

Uninsall / Remove

composer remove firebear/importexportfree

Ostatecznie po usunięciu:

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
źródło
9

Aby usunąć pakiet za pomocą polecenia kompozytora

composer remove <package>

Aby zainstalować pakiet za pomocą polecenia kompozytora

composer require <package>

Aby zainstalować wszystkie pakiety wymienione w pliku composer.json

composer install

Aby zaktualizować pakiety

composer update

Użyłem ich do projektu Laravel

Kiran Reddy
źródło
9

Możesz usunąć dowolny pakiet, wpisując następujące polecenie w terminalu, i po prostu usuń dostawców i alias podany podczas instalacji pakietu i zaktualizuj kompozytora

composer remove <package_name>
composer update
Maneesha
źródło
8

Jeśli podane odpowiedzi nadal nie pomogą Ci tego usunąć, spróbuj tego:

  • Ręcznie usuń linię requirezcomposer.json

  • Biegać composer update

DonJoe
źródło
3

Mamy świetne rozwiązanie. To rozwiązanie jest praktycznie zrobione w Laravel 6. Jeśli chcesz usunąć dowolny pakiet z projektu Laravel, możesz łatwo usunąć pakiet, wykonując następujące czynności:

Krok 1: Musisz znać nazwę pakietu, który chcesz usunąć. Jeśli nie znasz pełnej nazwy pakietu, możesz otworzyć folder projektu, przejść do composer.jsonpliku i sprawdzić, czy nazwa wymaga tablicy

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

Załóżmy, że tutaj usunę pakiet „fideloper / proxy”.

Krok 2 : Otwórz wiersz polecenia w folderze katalogu głównego projektu Krok 3: Przede wszystkim wyczyść pamięć podręczną, wykonując następujące polecenia. Uruchamiaj polecenia jeden po drugim.wprowadź opis zdjęcia tutaj

php artisan cache:clear  
php artisan config:clear 

Krok 4: Teraz napisz następujące polecenie, aby usunąć pakiet. Tutaj musisz zmienić nazwę swojego pakietu zamiast mojego przykładowego pakietu.

composer remove fideloper/proxy

Teraz poczekaj kilka sekund, które paczka usuwa.

Sumit Kumar Gupta
źródło
2
lub composer remove laravel/telescope --devjeśli jest to pakiet dev
vinsa
3

Usuń paczkę za pomocą

composer remove vendorname/packagename

możesz sprawdzić usunięcie pakietu z composer.json - docs

Lub możesz usunąć nazwę pakietu z composer.jsonpliku i uruchomić composer updatez katalogu projektu. Mam nadzieję, że to pomoże.

Abdellah Ramadan
źródło