Dit artikel is gebaseerd op de README.md en UPGRADE.md van laravel/cpx. De inhoud betreft v2.0.0 (uitgebracht op 24 juli 2026).
Wat is cpx?
cpx is een tool waarmee je commando’s uit Composer-pakketten kunt uitvoeren zonder ze te installeren. Zie het als de Composer-variant vannpx bij npm.
Waarom is dit nodig?
Het installeren van losse tools metcomposer global require kent de volgende problemen.
- Globale dependencies conflicteren met elkaar (dit gebeurt al snel bij tools die gedeelde dependencies zoals
nikic/php-parserofsymfony/consolegebruiken) - Je wilt per project tussen verschillende versies van dezelfde tool wisselen
- Bij langdurig gebruik vergeet je globale pakketten bij te werken
- Je wilt een tool die je maar één keer gebruikt niet globaal installeren
De volledige herschrijving in v2.0
cpx is in v2.0 volledig herschreven en wordt nu gedistribueerd als zelfstandige PHAR. Het basisgebruik (cpx <package-name> <command> [arguments]) en de cachedirectory ~/.cpx zijn behouden. De ontwikkeling van 1.x is bevroren; er komen geen nieuwe releases meer, ook geen bugfixes of beveiligingsfixes.
Upgraden is niets meer dan opnieuw globaal installeren.
Nieuwe functies in v2.0
Voorrang voor lokale binaries
Net als npx voert cpx, als er al een binary in je project is geïnstalleerd, die met voorrang uit voordat er een geïsoleerde kopie wordt geïnstalleerd. Vanaf de huidige directory zoekt het omhoog naar het dichtstbijzijnde Composer-project en voert het de overeenkomende binary invendor/bin (de standaard bin-dir) uit.
--skip-local.
Directe uitvoering van een lokale pakketdirectory
Je kunt de directory van een Composer-pakket in ontwikkeling rechtstreeks opgeven en de binary ervan uitvoeren.composer.json bevatten en de dependencies moeten vooraf zijn geïnstalleerd in vendor/autoload.php. In dit geval voert cpx geen Composer uit en kopieert of cachet het geen pakketten.
cpx exec en cpx tinker
Er zijn meerdere manieren om snel PHP-code uit te voeren.
Binnen een Laravel-project boot
cpx exec de applicatie volledig, inclusief config, facades en .env ($app is beschikbaar), en voert cpx tinker de php artisan tinker van het project zelf uit (als laravel/tinker is geïnstalleerd). Op andere plekken start een PsySH-shell.
Binnen een script kun je met cpx_require('vendor/package') (hernoemd van composer_require() uit 1.x) een pakket ter plekke autoloaden.
Aliassen
Om lange pakketnamen niet te hoeven onthouden, kun je eigen shortcuts definiëren.Niet-interactieve modus en JSON-output
cpx detecteert een niet-interactieve omgeving automatisch via de AI-agentdetectie van laravel/agent-detector, redirectie van standaardinvoer en de vlag--no-interaction/-n. In de niet-interactieve modus retourneren de beheercommando’s van cpx zelf — zoals installed, aliases, alias, unalias, clean en update — één regel JSON in plaats van opgemaakte tekst. Ook vanuit een interactieve terminal krijg je dezelfde output door --json mee te geven.
Belangrijkste wijzigingen ten opzichte van v1.x (commando’s)
Gerelateerde pagina’s
De cache en pakketten van oude versies in de directory~/.cpx worden automatisch gemigreerd naar het nieuwe formaat, maar pakketten die je met een versieconstraint uitvoerde worden onder een nieuwe directorynaam beheerd en worden daarom eenmalig opnieuw geïnstalleerd. Overbodig geworden kopieën uit het 1.x-tijdperk verwijder je met cpx clean.
laravel/cpx repository
De broncode en de nieuwste README vind je hier.
cpx 2.0-upgradegids
Gedetailleerde migratie-instructies van 1.x naar 2.x.