Composer 2.0 – Was ist neu? Was ändert sich?


31.10.2020
Konzeption

Der PHP Dependency Manager Composer wurde vor einigen Tagen in der Version 2.0 veröffentlich. Hier fasse ich kurz zusammen, was neu ist und was sich für den Webentwickler Alltag ändert.

Composer 2.0 – was ist das?

Der altehrwürdige Maestro ist auch weiterhin das Gesicht von Composer

Um eine Website zu programmieren braucht man in der Regel viele kleine Lösungen für zahlreiche Herausforderungen. Man muss dabei nicht immer das Rad neu erfinden. Man kann stattdessen auf Programme von Dritten (sogenannte Pakete) zurückgreifen. Sobald mehrere Pakete zusammenarbeiten, wird es immer schwieriger, alle Pakete parallel ohne Konflikte miteinander laufen zu lassen. Vor allem, weil diese Pakete wiederum von anderen Paketen abhängen.

{
  "name": "mozgiel-theme",
  "version": "1.1.5",
  "description": "Neues Webprojekt von mozgiel.de",
  "author": "Darius Mozgiel",
  "dependencies": {
    "bootstrap": "^4.0.0-alpha.4",
    "browser-sync": "^2.16.0",
    "font-awesome": "^4.6.3",
    "gulp": "^3.9.1",
  }
}

Spätestens wenn man ein Paket aktualisieren will, muss man eigentlich überprüfen, ob es noch mit allen anderen funktioniert. Bei 20-30 Paketen pro Webprojekt kann das natürlich sehr anstrengend sein. Die Lösung lautet hier Dependency Manager. Das ist ein Programm, welches sich um Abhängigkeiten kümmert. Eine praktische Sache also, welche die Installation, Erweiterung und Aktualisierung von Kernsystemen erheblich erleichert.

Was ist neu bei Composer 2.0

Composer wurde komplett auf den Kopf gestellt.

Schnellere Downloads

Das wichtigste Feature ist die Geschwindigkeit. Je nach Framework können die Befehle composer install bzw. composer update schon mal eine Weile dauern. Composer 2.0 führt die Downloads parallel durch, was ohne Zwischenspeicher schon mal doppelt so schnell sein kann.

Composer 2.0 ist bei der Installation von Laravel doppelt so schnell
Quelle: https://php.watch/articles/composer-2

Packages können auch offline installiert werden

Wenn die Umgebung entsprechend gesetzt wurde und eine composer.lock Datei vorhanden ist, kann composer install auch ohne Onlineverbindung die Pakete installieren.

Dies hat allerdings zur Folge, dass Composer 2.0 überhaupt keinen Netzwerkzugriff mehr startet. Schön wäre hier eine Fallback Option, z.B. falls ältere Pakete nicht verfügbar sind oder weil man die Version ohnehin bereits im Cache hat. Das würde die Geschwindigkeit von Composer abermals erhöhen.

Composer 2: Platform Check

Composer führt schon während der Laufzeit einen Systemcheck durch. Sobald der Autoload gestartet wird, wird auch eine platform_check.php Datei angelegt, die das System auf PHP Version und vorhandene, benötigte Extensions überprüft.

Erschwerter root Zugriff auf composer

Wer die schlechte Angewohnheit hat, composer über root durchzuführen (oder in der Konsole gerade nicht mehr merkt, dass er im su Modus ist), bekommt in Zukunft eine Warnung, dass man Composer 2.0 nicht im root Modus durchführen sollte. Prinzipiell geht es auch weiterhin, jedoch muss man das in Zukunft aktiv bestätigen.

Fazit – schneller & abwärtskompatibel

Die neue Composer Version ist auf den ersten Blick eine tolle Weiterentwicklung. Während vor allem die Geschwindigkeit und der Systemcheck praktische Alltagshelfer für den Webentwickler sind, hat sich an der Grundhandhabung nichts geändert.

Man bekommt also viel Milch für wenig Milch. Denn die neuen Syntaxmöglichkeiten und Befehle sind alle optional. Am grundlegenden Workflow ändert sich nichts. So können also auch die alten composer.json Dateien verwendet werden.