Wie entferne ich ein Paket mit Composer aus Laravel?

402

Was ist der richtige Weg, um ein Paket aus Laravel 4 zu entfernen? So lange habe ich versucht:

  1. Deklaration entfernen aus composer.json(im Abschnitt "erfordern")
  2. Entfernen Sie alle Klassen-Aliase aus app.php
  3. Entfernen Sie alle Verweise auf das Paket aus meinem Code :-)
  4. Lauf composer update
  5. Lauf composer dump-autoload

Funktioniert nicht! Vermisse ich etwas

Einige Pakete veröffentlichen ihre Konfiguration über "artisan config: Publish ...". Gibt es eine Möglichkeit, sie zu "veröffentlichen"?

igaster
quelle

Antworten:

596

Wenn Sie den folgenden Befehl ausführen, wird das Paket vom Hersteller (oder von jedem Ort, an dem Sie Pakete installieren), composer.json und composer.lock entfernt. Ändern Sie den Anbieter / das Paket entsprechend.

composer remove vendor/package

Natürlich müssen Sie Verweise auf dieses Paket in Ihrer App entfernen.

Ich verwende derzeit die folgende Version von Composer:

Composer version 1.0-dev (7b13507dd4d3b93578af7d83fbf8be0ca686f4b5) 2014-12-11 21:52:29
Steadweb
quelle
13
Und dann ausführen composer update, um den Anbieter- / Paketordner vom Anbieter zu entfernen
Zeshan
11
Das @ ZeshanKhattak Composer-Update aktualisiert alle Abhängigkeiten. Auf diese Weise bleibt das Projekt in einem instabilen Zustand. Verwenden Sie Composer Update nicht, es sei denn, Sie möchten Abhängigkeiten aktualisieren
Zarax
11
composer remove packagename, Aktualisiert das Entfernen des Pakets aus composer.json und entfernt den Paketordner vom Hersteller ... laravel - 5.4.24, composer - 1.4.2.
Es scheint, als würde Composer fehlende Pakete nach dem Ausführen automatisch installieren composer remove <package>. Wie auch immer, um das zu vermeiden? Verwenden von Version 1.7.2.
Olle Härstedt
Es sollte sein: Composer entfernen stattdessen Paketname: Composer entfernen Anbieter / Paket Es ist kein Anbieter erforderlich, da Laravel automatisch im Herstellerverzeichnis nach Paketen sucht.
prashant
171

Hat es funktioniert ... Die Schritte zum Entfernen eines Pakets aus Laravel sind:

  1. Deklaration aus composer.json entfernen (im Abschnitt "erfordern")
  2. Entfernen Sie den Dienstanbieter aus "app / config / app.php" (Verweis im Array "Anbieter").
  3. Entfernen Sie alle Klassen-Aliase aus "app / config / app.php".
  4. Entfernen Sie alle Verweise auf das Paket aus Ihrem Code :-)
  5. Führen Sie "Composer Update Vendor / Package Name" aus. Dadurch wird der Paketordner aus dem Ordner "Vendor" entfernt und die automatische Ladezuordnung von Composer neu erstellt.
  6. Löschen Sie die veröffentlichten Dateien manuell (Kommentar von zwacky lesen)

Der Paketordner wird aus dem Ordner "Vendor" entfernt

igaster
quelle
2
Obwohl die Veröffentlichung von Assets / Configs nicht wirklich automatisiert ist. Normalerweise lösche ich die Hersteller- / Paketordner in config / oder public / manuell.
zwacky
7
Jetzt sollte Laravel etwas wie "Paket <Paketname> entfernen" einfallen lassen, um es einfacher zu machen.
Chandan Gupta
19
Ein Problem bei dieser Lösung besteht darin, dass alle anderen Pakete aktualisiert werden, die möglicherweise nicht Ihren Wünschen entsprechen.
Tremby
3
(1) und (5) können durch Laufen ersetzt werden composer remove vendor/package, denke ich.
JCarlosR
Vielen Dank, diese Anleitung war nützlich, um nicht funktionierende Igaster / Laravel-Theme-Paket zu entfernen
Jjsg08
59

Führen Sie den folgenden Befehl aus

composer remove Vendor/Package Name

Das ist alles. Kein Composer-Update erforderlich. Der Name des Anbieters / Pakets ist nur das zuvor installierte Verzeichnis

Riaj Ferdous
quelle
1
Ich habe dies getan und es heißt, dass es in composer.json nicht mehr benötigt wird, also "ignorieren"
Sweet Chilly Philly
1
composer remove <packageName>Ich denke, dieser ist perfekt zum Entfernen von Paketen. Vergiss Vendor:) Zum Beispielcomposer remove laravel/tinker
Shamsul Huda
43

Normalerweise composer removereicht es aus:

$ composer remove vendor/package

Wenn das Composer-Paket jedoch entfernt wird und der Konfigurationscache nicht bereinigt wird, können Sie es nicht bereinigen, wenn Sie dies versuchen

php artisan config:clear

Sie können einen Fehler bekommen In ProviderRepository.php line 208:

Klasse 'Laracasts \ Flash \ FlashServiceProvider' nicht gefunden

Dies ist eine Sackgasse, es sei denn, Sie löschen Dateien

$rm bootstrap/cache/config.php

Und das ist Laravel 5.6, von dem ich spreche, nicht sehr altes Zeug.

Dies geschieht normalerweise bei der automatisierten Bereitstellung, wenn Sie Dateien einer neuen Version auf den alten Cache kopieren. Auch wenn Sie den Cache vor dem Kopieren geleert haben. Sie erhalten einen alten Cache und einen neuen composer.json.

Jewgenij Afanasjew
quelle
2
Ich denke, es ist in 5.7
Yevgeniy Afanasyev
1
Mit 5.6 war mein Bootstrap / Cache leer. Ich habe vergessen, dass ich den Cache-Pfad geändert habe (config / cache.php)! Das Löschen der Dateien im neuen Cache-Ordner hat das Problem behoben!
Aine
2
@ YevgeniyAfanasyev Dies ist nicht behoben Auch in 5.7
Shreyansh Panchal
2
Ich habe fast 3 Stunden damit verbracht, meine Haare darüber herauszuziehen. Ich dachte, das config:clearwürde das beheben.
Shreyansh Panchal
34

Sie können jedes Paket entfernen, indem Sie einfach den folgenden Befehl in das Terminal eingeben und einfach die Anbieter und Alias ​​entfernen, die Sie zum Zeitpunkt der Installation des Pakets angegeben haben, falls vorhanden, und den Composer aktualisieren.

composer remove vendor/your_package_name
composer update
Shahrukh Anwar
quelle
1
Manchmal müssen Sie den Composer aktualisieren, um die neuen Abhängigkeiten zu aktualisieren. Ich denke, es schadet nicht, das zu betreiben.
Shahrukh Anwar
18

Sie können eine der folgenden zwei Methoden ausführen:

  1. Ausführen des folgenden Befehls (am meisten empfohlene Methode zum Entfernen Ihres Pakets, ohne Ihre anderen Pakete zu aktualisieren)

    $ composer remove vendor/package

  2. Gehen Sie zu Ihrer composer.json-Datei und führen Sie den folgenden Befehl aus. Dadurch wird Ihr Paket entfernt (es werden jedoch auch Ihre anderen Pakete aktualisiert).

    $ composer update

Prashant Barve
quelle
17

Entfernen Sie den Cache, bevor Sie ein Paket aus der composer.json-Deklaration entfernen

php artisan cache:clear  
php artisan config:clear 

Wenn Sie vergessen haben, den Cache zu entfernen, und der Fehler "Klasse nicht gefunden" angezeigt wird, installieren Sie das Paket erneut, löschen Sie den Cache und entfernen Sie ihn erneut.

Rayees Pk
quelle
16

Einfachster und einfachster Weg

Syntax:

composer remove <package>

Beispiel:

composer remove laravel/tinker
Gecko
quelle
15

Wenn Sie nach Abschluss aller oben genannten Schritte immer noch den Fehler erhalten, gehen Sie zu Ihren Projekten und bootstrap->cache->config.phpentfernen Sie die Provider- und Aliase-Einträge manuell aus dem zwischengespeicherten Array.

Ramjith Ap
quelle
Das hat mir geholfen.
Peter Griffin
1
Einige Paketanbieter erfüllen nicht alle Anforderungen zum Erstellen eines Pakets. Aus diesem Grund können diese Anbieter composer remove vendor/packagedie Cache-Einträge nicht ordnungsgemäß entfernen. Also, @Ramjith Ap ist hier absolut richtig.
Samrat Khan
12

** **.

Verwenden Sie "Composer entfernen Anbieter / Paket"

** Dies ist ein Beispiel: Installieren / Hinzufügen eines Pakets

composer require firebear/importexportfree

Nicht installieren / entfernen

composer remove firebear/importexportfree

Endlich nach dem Entfernen:

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
quelle
9

So entfernen Sie ein Paket mit dem Befehl composer

composer remove <package>

So installieren Sie ein Paket mit dem Befehl composer

composer require <package>

So installieren Sie alle Pakete, die in composer.json erwähnt werden

composer install

Pakete aktualisieren

composer update

Ich habe diese für das Laravel-Projekt verwendet

Kiran Reddy
quelle
9

Sie können jedes Paket entfernen, indem Sie den folgenden Befehl in das Terminal eingeben und einfach die Anbieter und Alias ​​entfernen, die Sie zum Zeitpunkt der Installation des Pakets angegeben haben, und den Composer aktualisieren

composer remove <package_name>
composer update
Maneesha
quelle
8

Falls die angegebenen Antworten Ihnen immer noch nicht dabei helfen, das zu entfernen, versuchen Sie Folgendes:

  • Löschen Sie die Zeile manuell requireauscomposer.json

  • Lauf composer update

DonJoe
quelle
3

Wir haben eine großartige Lösung gefunden. Diese Lösung wird praktisch in Laravel 6 ausgeführt. Wenn Sie ein Paket aus Ihrem Laravel-Projekt entfernen möchten, können Sie das Paket einfach entfernen, indem Sie die folgenden Schritte ausführen:

Schritt 1: Sie müssen den Paketnamen kennen, den Sie entfernen möchten. Wenn Sie den vollständigen Paketnamen nicht kennen, können Sie Ihren Projektordner öffnen und zur composer.jsonDatei gehen und den Namen einchecken, für den ein Array erforderlich ist

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

Angenommen, hier werde ich das Paket "fideloper / proxy" entfernen.

Schritt 2 : Öffnen Sie die Eingabeaufforderung mit Ihrem Projektstammordnerverzeichnis. Schritt 3: Löschen Sie zunächst den gesamten Cache mit den folgenden Befehlen. Führen Sie die Befehle einzeln aus.Geben Sie hier die Bildbeschreibung ein

php artisan cache:clear  
php artisan config:clear 

Schritt 4: Schreiben Sie nun den folgenden Befehl, um das Paket zu entfernen. Hier müssen Sie Ihren Paketnamen anstelle meines Beispielpakets ändern.

composer remove fideloper/proxy

Warten Sie nun einige Sekunden, bis Ihr Paket entfernt wurde.

Sumit Kumar Gupta
quelle
2
oder composer remove laravel/telescope --devwenn es ein
Entwicklerpaket
3

Entfernen Sie die Verpackung mit

composer remove vendorname/packagename

Sie können das Entfernen des Pakets aus composer.json - docs überprüfen

Oder Sie können den Paketnamen aus der composer.jsonDatei entfernen und composer updatein Ihrem Projektverzeichnis ausführen . Ich hoffe, es hilft.

Abdellah Ramadan
quelle