Come rimuovere un pacchetto da Laravel usando il compositore?


402

Qual è il modo giusto per rimuovere un pacchetto da Laravel 4? Così a lungo ho provato:

  1. Rimuovi dichiarazione da composer.json(nella sezione "richiedi")
  2. Rimuovere eventuali alias di classe da app.php
  3. Rimuovi qualsiasi riferimento al pacchetto dal mio codice :-)
  4. Correre composer update
  5. Correre composer dump-autoload

Non funziona! Mi sto perdendo qualcosa?

Alcuni pacchetti pubblicano la loro configurazione tramite "configurazione artigianale: pubblica ...". C'è un modo per "non pubblicarli"?

Risposte:


598

L'esecuzione del comando seguente rimuoverà il pacchetto dal fornitore (o ovunque installiate i pacchetti), composer.json e composer.lock. Modificare il fornitore / pacchetto in modo appropriato.

composer remove vendor/package

Ovviamente dovrai rimuovere i riferimenti a quel pacchetto all'interno della tua app.

Attualmente sto eseguendo la seguente versione di compositore:

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

13
E poi esegui composer updateper rimuovere la cartella del fornitore / pacchetto dal fornitore
Zeshan,

11
L'aggiornamento del compositore di @ZeshanKhattak aggiornerà tutte le dipendenze. In questo modo lascia il progetto in stato instabile. Non utilizzare l'aggiornamento del compositore a meno che non si desideri aggiornare le dipendenze
zarax,

11
composer remove packagename, Aggiorna rimuovendo il pacchetto da composer.json e rimuove la cartella del pacchetto dal fornitore ... laravel - 5.4.24, compositore - 1.4.2.

Sembra che compositore stia installando automaticamente i pacchetti mancanti dopo l'esecuzione composer remove <package>. Comunque per evitarlo? Utilizzando la versione 1.7.2.
Olle Härstedt,

dovrebbe essere: compositore rimuovere nome_pacchetto invece: compositore rimuovere fornitore / pacchetto non è necessario il fornitore poiché laravel controlla automaticamente i pacchetti nella directory del fornitore.
prashant,

171

Ha funzionato ... I passaggi per rimuovere un pacchetto da Laravel sono:

  1. Rimuovi la dichiarazione da composer.json (nella sezione "richiedi")
  2. Rimuovere il Service Provider da "app / config / app.php" (riferimento nell'array "provider")
  3. Rimuovi eventuali alias di classe da "app / config / app.php"
  4. Rimuovi eventuali riferimenti al pacchetto dal tuo codice :-)
  5. Esegui "compositore aggiornamento fornitore / nome pacchetto". Questo rimuoverà la cartella del pacchetto dalla cartella "vendor" e ricostruirà la mappa di caricamento automatico del compositore.
  6. Elimina manualmente i file pubblicati (leggi il commento di zwacky)

Rimuoverà la cartella del pacchetto dalla cartella "Venditore"


2
sebbene la pubblicazione di risorse / configurazioni non sia realmente automatizzata. di solito elimino manualmente le cartelle del fornitore / pacchetto in config / o public /.
zwacky,

7
ora laravel dovrebbe trovare qualcosa come "rimuovi pacchetto <nome-pacchetto>" per renderlo più semplice.
Chandan Gupta,

19
Un problema con questa soluzione è che aggiornerà tutti gli altri pacchetti, che potrebbe non essere quello che desideri.
tremby,

3
(1) e (5) possono essere sostituiti con la corsa composer remove vendor/package, credo.
JCarlosR,

Grazie, queste istruzioni sono state utili per rimuovere il pacchetto Igaster / laravel-theme non funzionante
Jjsg08

59

Esecuzione del comando seguente

composer remove Vendor/Package Name

È tutto. Non è necessario l'aggiornamento del compositore. Nome fornitore / pacchetto è solo la directory installata in precedenza


1
L'ho fatto e mi dice che non è più necessario in compositore.json così 'ignorare'
Sweet Chilly Philly

1
composer remove <packageName>Penso che questo sia perfetto per rimuovere eventuali pacchetti. Dimentica Vendor:) Ad esempio,composer remove laravel/tinker
Shamsul Huda,

43

Normalmente composer removeusato in questo modo è sufficiente:

$ composer remove vendor/package

ma se il pacchetto del compositore viene rimosso e la cache di configurazione non viene ripulita, non è possibile ripulirla, quando si prova in questo modo

php artisan config:clear

puoi ricevere un errore In ProviderRepository.php line 208:

Classe "Laracasts \ Flash \ FlashServiceProvider" non trovata

questo è un vicolo cieco, a meno che non si elimini i file

$rm bootstrap/cache/config.php

E questo è Laravel 5.6 di cui sto parlando, non una specie di roba molto vecchia.

Di solito accade durante la distribuzione automatica, quando si copiano i file di una nuova versione in aggiunta alla vecchia cache. Anche se hai cancellato la cache prima di copiare. Si finisce con la vecchia cache e un nuovo composer.json.


2
Penso che sia stato risolto in 5.7
Yevgeniy Afanasyev il

1
Con 5.6, il mio bootstrap / cache era vuoto. Ho dimenticato che avevo cambiato il percorso della cache (config / cache.php)! L'eliminazione dei file nella nuova cartella della cache ha risolto il problema!
Aine,

2
@YevgeniyAfanasyev Questo non è stato risolto Anche nel 5.7
Shreyansh Panchal

2
Ho quasi trascorso 3 ore a strapparmi i capelli per questo. Ho pensato di config:clearrisolvere questo problema.
Shreyansh Panchal,

34

puoi rimuovere qualsiasi pacchetto semplicemente digitando il comando follwing nel terminale e semplicemente rimuovere i provider e l'alias che hai fornito al momento dell'installazione del pacchetto e aggiornare il compositore,

composer remove vendor/your_package_name
composer update

1
A volte per aggiornare le nuove dipendenze, è necessario aggiornare il compositore. Penso che non ci sia nulla di male nel gestirlo.
Shahrukh Anwar,

18

Puoi eseguire uno dei due metodi seguenti:

  1. Esecuzione del comando seguente (modo più consigliato per rimuovere il pacchetto senza aggiornare gli altri pacchetti)

    $ composer remove vendor/package

  2. Vai al tuo file composer.json ed esegui il comando come sotto rimuoverà il tuo pacchetto (ma aggiornerà anche gli altri tuoi pacchetti)

    $ composer update


17

Prima di rimuovere un pacchetto dalla dichiarazione composer.json, rimuovere la cache

php artisan cache:clear  
php artisan config:clear 

Se si dimentica di rimuovere la cache e si ottiene un errore di classe non trovata, reinstallare il pacchetto, cancellare la cache e rimuovere di nuovo.


16

Il modo più semplice e facile

Sintassi:

composer remove <package>

Esempio:

composer remove laravel/tinker

15

Se l'errore persiste dopo aver completato tutti i passaggi precedenti, andare ai progetti bootstrap->cache->config.phprimuovere manualmente le voci di provider e alias dall'array memorizzato nella cache.


Questo mi ha aiutato.
Peter Griffin,

1
Alcuni fornitori di pacchetti non soddisfano tutti i requisiti per creare un pacchetto. Per tale motivo, questi fornitori composer remove vendor/packagenon sono in grado di rimuovere correttamente le voci della cache. Quindi, @Ramjith Ap è assolutamente corretto qui.
Samrat Khan,

12

**

usa "compositore rimuovi fornitore / pacchetto"

** Questo è un esempio: installa / aggiungi Pakage

composer require firebear/importexportfree

Disinstalla / Rimuovi

composer remove firebear/importexportfree

Finalmente dopo aver rimosso:

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

Per rimuovere un pacchetto usando il comando compositore

composer remove <package>

Per installare un pacchetto usando il comando compositore

composer require <package>

Per installare tutti i pacchetti citati in composer.json

composer install

Per aggiornare i pacchetti

composer update

Li ho usati per il progetto Laravel


9

È possibile rimuovere qualsiasi pacchetto digitando il seguente comando nel terminale e rimuovere semplicemente i provider e l'alias forniti al momento dell'installazione del pacchetto e aggiornare il compositore

composer remove <package_name>
composer update

8

Se le risposte fornite non ti aiutano ancora a rimuoverlo, prova questo:

  • Elimina manualmente la riga requiredacomposer.json

  • Correre composer update


3

Siamo arrivati ​​con un'ottima soluzione. Questa soluzione viene praticamente eseguita in Laravel 6. Se vuoi rimuovere qualsiasi pacchetto dal tuo Progetto Laravel, puoi facilmente rimuovere il pacchetto seguendo i seguenti passaggi:

Passaggio 1: è necessario conoscere il nome del pacchetto che si desidera rimuovere. Se non si conosce il nome completo del pacchetto, è possibile aprire la cartella del progetto e andare al composer.jsonfile e verificare il nome richiede un array

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

Supponiamo che qui rimuoverò il pacchetto "fideloper / proxy".

Passaggio 2 : Aprire il prompt dei comandi con la directory della cartella principale del progetto Passaggio 3: Prima di tutto svuotare tutta la cache seguendo i comandi. Esegui i comandi uno per uno.inserisci qui la descrizione dell'immagine

php artisan cache:clear  
php artisan config:clear 

Passaggio 4: scrivere ora il comando seguente per rimuovere il pacchetto. Qui è necessario modificare il nome del pacchetto anziché il mio pacchetto di esempio.

composer remove fideloper/proxy

Ora attendi qualche secondo che il pacchetto venga rimosso.


2
o composer remove laravel/telescope --devse si tratta di pacchetto dev
vinsa

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.