Wie entferne ich ungenutzte Abhängigkeiten von Composer?
Lesezeit: 3 Minuten
Lorenz Meier
Ich habe ein Paket mit Composer installiert und es wurden viele andere Pakete als Abhängigkeiten installiert.
Jetzt habe ich das Hauptpaket mit deinstalliert composer remove packageauthor/packagename, aber alle alten Abhängigkeiten wurden nicht entfernt. Ich habe erwartet, dass Composer aufräumt und nur Pakete behält, die entsprechend erforderlich sind composer.json und ihre Abhängigkeiten.
Wie kann ich Composer dazu zwingen, alle unbenutzten Pakete zu bereinigen und zu entfernen?
Ich muss zugeben, dass die Flagge hier nicht ganz offensichtlich ist, was sie tun wird.
Aktualisieren
composer remove jenssegers/mongodb
Ab v1.0.0-beta2--update-with-dependencies ist die Standardeinstellung und wird nicht mehr benötigt.
danke an @Yehosef für das Starten des Problems auf github, wo eine Lösung bereitgestellt wurde, aber da er seine Antwort nicht aktualisiert hat, habe ich beschlossen, meine eigene zu schreiben, um es allen bequemer zu machen
– Denis Pschenow
3. April 2015 um 18:52 Uhr
Danke, ich habe das Ende ihrer Diskussion nicht verstanden.
– Lorenz Meyer
4. April 2015 um 6:42 Uhr
Eine Sache zu beachten: Wenn Sie es bereits getan haben composer remove …‘d, aber das vergessen --update-with-dependencies bis Sie auf diese Frage stoßen – nachfolgende Anrufe an composer remove tötet nicht alle Abhängigkeiten. Sie müssen zurückkehren, Komponist installdann composer remove --update-with-dependencies
– Mike G
15. September 2015 um 6:23 Uhr
Jetzt bekomme ich folgende Meldung: You are using the deprecated option "update-with-dependencies". This is now default behaviour. The --no-update-with-dependencies option can be used to remove a package without its dependencies
– Pathos
8. April 2016 um 18:00 Uhr
Wie sieht es mit der Bereinigung nach dem Entfernen eines Pakets aus? — Hier kommt die Antwort von @LorenzMeyer ins Spiel: composer update Daumen hoch für diese Antwort an @LorenzMeyer
– Allen Linatoc
7. Juni 2016 um 13:49 Uhr
Lorenz Meier
Tatsächlich ist es sehr einfach.
composer update
wird all dies für Sie erledigen, aber es wird auch die anderen Pakete aktualisieren.
Um ein Paket zu entfernen, ohne die anderen zu aktualisieren, geben Sie dieses Paket im Befehl an, zum Beispiel:
composer update monolog/monolog
werde die entfernen monolog/monolog Paket.
Trotzdem können einige leere Ordner oder Dateien verbleiben, die nicht automatisch entfernt werden können und manuell entfernt werden müssen.
Der unglückliche Teil daran ist, dass es Sie dazu zwingt, Ihre Pakete zu aktualisieren, anstatt nur alte Versionen zu entfernen. Beispiel: Wenn ich zwei Pakete AAA/aaa ~1 und Version BBB/bbb ~2 habe und derzeit Version 1.0 von AAA/aaa habe und sie 1.1 veröffentlicht haben, dann werde ich automatisch aktualisiert, wenn ich BBB/bbb lösche (was möglicherweise nicht der Fall ist sein, was ich vorhatte..)
– Yehosef
16. Februar 2015 um 15:05 Uhr
Sie haben Recht. Wenn Sie eine bessere Lösung haben, kommen Sie zurück und posten Sie sie als Antwort.
– Lorenz Meyer
16. Februar 2015 um 15:23 Uhr
Ich weiß es noch nicht – ich möchte nur für andere auf einen Fallstrick dieses Ansatzes hinweisen.
– Yehosef
16. Februar 2015 um 16:33 Uhr
es sollte wirklich ein Flag auf dem Composer installiert werden.. so etwas wie --prune