Skip to main content
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 di npx.
Internamente installa il pacchetto in una directory isolata prima di eseguirlo, quindi non entra in conflitto con le dipendenze Composer del progetto o globali. Dalla seconda esecuzione in poi riutilizza lo stesso pacchetto installato, quindi è veloce.

Perché serve

L’installazione di singoli tool con composer global require presenta alcuni problemi.
  • Le dipendenze globali si scontrano tra loro (facile con dipendenze comuni come nikic/php-parser o symfony/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.
cpx stesso è distribuito come PHAR autosufficiente e non ha dipendenze runtime Composer, quindi anche installato globalmente non causa conflitti.

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.
La v2.0 richiede PHP 8.3 o superiore.

Nuove funzionalità della v2.0

Esecuzione preferenziale dei binari locali

Come npx, 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).
Per forzare la copia isolata usa --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.
La directory di destinazione deve avere un 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.
L’elenco di alias built-in per pacchetti popolari incluso nella 1.x è stato rimosso, quindi se ti serve devi definirli tu.

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.
Ultima modifica il 2 agosto 2026