Dieser Artikel basiert auf der README.md und UPGRADE.md von laravel/cpx. Er bezieht sich auf den Stand von v2.0.0 (veröffentlicht am 24. Juli 2026).
Was ist cpx?
cpx ist ein Tool, mit dem sich in Composer-Paketen enthaltene Befehle ausführen lassen, ohne sie zu installieren. Am einfachsten lässt es sich als das Composer-Pendant zunpx aus der npm-Welt beschreiben.
Warum wird das benötigt?
Die Installation einzelner Tools übercomposer global require bringt folgende Probleme mit sich:
- Globale Abhängigkeiten kollidieren miteinander (besonders häufig bei Tools mit gemeinsamen Abhängigkeiten wie
nikic/php-parserodersymfony/console). - Wechsel zwischen unterschiedlichen Versionen desselben Tools je nach Projekt.
- Im Dauerbetrieb wird das Aktualisieren globaler Pakete oft vergessen.
- Einmalig benötigte Tools sollen nicht global installiert werden.
Vollständige Neuimplementierung in v2.0
cpx wurde in v2.0 vollständig neu geschrieben und wird jetzt als eigenständige PHAR ausgeliefert. Die grundlegende Verwendung (cpx <package-name> <command> [arguments]) und das Cache-Verzeichnis ~/.cpx bleiben unverändert. Die Entwicklung von 1.x ist eingestellt; es wird keine weiteren Releases geben – auch keine Bugfixes oder Sicherheitsupdates.
Für das Upgrade genügt eine erneute globale Installation.
Neue Funktionen in v2.0
Bevorzugte Ausführung lokaler Binaries
Analog zu npx wird eine bereits im Projekt installierte Binary bevorzugt ausgeführt, bevor eine isolierte Kopie installiert wird. cpx sucht vom aktuellen Verzeichnis aufwärts nach dem nächstgelegenen Composer-Projekt und führt die passende Binary invendor/bin (das Standard-bin-dir) aus.
--skip-local.
Direkte Ausführung eines lokalen Paketverzeichnisses
Sie können ein in Entwicklung befindliches Paketverzeichnis direkt angeben, um dessen Binary auszuführen.composer.json enthalten, und die Abhängigkeiten müssen zuvor in vendor/autoload.php installiert worden sein. cpx führt in diesem Fall weder Composer aus noch kopiert oder cached es das Paket.
cpx exec und cpx tinker
Für die schnelle Ausführung von PHP-Code stehen mehrere Möglichkeiten zur Verfügung.
Innerhalb eines Laravel-Projekts bootet
cpx exec die Anwendung vollständig einschließlich Config, Facades und .env ($app steht zur Verfügung), während cpx tinker das projekteigene php artisan tinker ausführt (sofern laravel/tinker installiert ist). Außerhalb wird eine PsySH-Shell gestartet.
Innerhalb von Skripten können Pakete mit cpx_require('vendor/package') (in 1.x hieß es composer_require()) direkt autoloadbar gemacht werden.
Aliase
Damit Sie sich keine langen Paketnamen merken müssen, können Sie eigene Kürzel definieren.Nicht-interaktiver Modus und JSON-Ausgabe
cpx erkennt nicht-interaktive Umgebungen automatisch über laravel/agent-detector (Erkennung von KI-Agenten), Umleitung der Standardeingabe sowie die Flags--no-interaction/-n. Im nicht-interaktiven Modus geben Managementbefehle wie installed, aliases, alias, unalias, clean und update anstelle von formatiertem Text eine einzeilige JSON-Antwort zurück. Auch von einem interaktiven Terminal aus erhalten Sie dieselbe Ausgabe, indem Sie --json übergeben.
Wichtige Änderungen gegenüber v1.x (Befehle)
Verwandte Seiten
Cache und ältere Paketversionen im Verzeichnis~/.cpx werden automatisch in das neue Format migriert. Pakete, die mit Versions-Constraints ausgeführt wurden, werden unter neuen Verzeichnisnamen verwaltet und daher nur einmalig neu installiert. Nicht mehr benötigte Kopien aus der 1.x-Ära können Sie mit cpx clean entfernen.
laravel/cpx Repository
Quellcode und aktuelle README hier.
cpx 2.0 Upgrade-Guide
Detaillierte Migrationsschritte von 1.x zu 2.x.