Questo articolo si basa su README.md e UPGRADE.md di laravel/cpx, aggiornati alla v2.0.0 rilasciata il 24 luglio 2026.
Cos’è cpx
cpx è uno strumento che permette di eseguire i comandi contenuti in un pacchetto Composer senza doverlo installare. Puoi pensarlo come la versione Composer dinpx.
Perché serve
L’installazione di singoli tool concomposer global require presenta alcuni problemi.
- Le dipendenze globali si scontrano tra loro (facile con dipendenze comuni come
nikic/php-parserosymfony/console). - Vuoi cambiare versione dello stesso tool per progetto.
- Nel lungo termine ti dimentichi di aggiornare i pacchetti globali.
- Non vuoi installare globalmente un tool usato una sola volta.
Riscrittura totale in v2.0
Con la v2.0 cpx è stato completamente riscritto e ora è distribuito come PHAR autosufficiente. L’uso di base (cpx <package-name> <command> [arguments]) e la directory di cache ~/.cpx restano invariati. La 1.x è in freeze: non sono previste nuove release, comprese quelle di bug e sicurezza.
Aggiornare è semplice: reinstalli globalmente.
Nuove funzionalità della v2.0
Esecuzione preferenziale dei binari locali
Comenpx, se nel progetto esiste già un binario installato, cpx lo esegue prima di installare la copia isolata. Risale dalla directory corrente verso l’alto fino al progetto Composer più vicino ed esegue il binario corrispondente in vendor/bin (la bin-dir di default).
--skip-local.
Esecuzione diretta di una directory pacchetto locale
Puoi puntare direttamente a una directory di un pacchetto Composer in sviluppo ed eseguirne il binario.composer.json valido e le dipendenze devono essere già installate in vendor/autoload.php. In questo caso cpx non esegue Composer né copia/mette in cache il pacchetto.
cpx exec e cpx tinker
Sono disponibili diversi modi rapidi per eseguire codice PHP.
All’interno di un progetto Laravel,
cpx exec fa il boot completo dell’applicazione (config, facade, .env; $app è disponibile) e cpx tinker esegue il php artisan tinker del progetto stesso (se è installato laravel/tinker). Altrove viene avviata la shell PsySH.
Negli script puoi richiedere al volo un pacchetto in autoload con cpx_require('vendor/package') (rinominato rispetto a composer_require() della 1.x).
Alias
Per non dover ricordare nomi lunghi di pacchetti, puoi definire scorciatoie personalizzate.Modalità non interattiva e output JSON
cpx rileva automaticamente ambienti non interattivi tramite laravel/agent-detector, redirezione dello standard input e i flag--no-interaction/-n. In modalità non interattiva, i comandi di gestione di cpx come installed, aliases, alias, unalias, clean e update restituiscono una singola riga JSON invece del testo formattato. Anche da terminale interattivo puoi ottenere lo stesso output passando --json.
Principali cambi rispetto alla 1.x (comandi)
Pagine correlate
Le cache e i pacchetti vecchi in~/.cpx vengono migrati automaticamente al nuovo formato, ma i pacchetti eseguiti con vincoli di versione sono gestiti con nuove directory, quindi vengono reinstallati solo alla prima esecuzione. Le copie non più necessarie della 1.x si eliminano con cpx clean.
Repository laravel/cpx
Codice sorgente e README aggiornato.
Guida all'upgrade di cpx 2.0
Procedura dettagliata di migrazione da 1.x a 2.x.