Skip to main content
Cet article s’appuie sur le README.md et le UPGRADE.md du dépôt laravel/cpx. Il reflète l’état de la version 2.0.0 sortie le 24 juillet 2026.

Qu’est-ce que cpx ?

cpx est un outil qui permet d’exécuter les commandes fournies par un package Composer sans avoir à l’installer. On peut le voir comme l’équivalent Composer de npx en npm.
En interne, cpx installe le package dans un répertoire isolé avant de l’exécuter, ce qui évite tout conflit avec les dépendances Composer globales ou celles du projet. À partir de la deuxième exécution, cpx réutilise le package déjà installé, ce qui est très rapide.

À quoi cela sert-il ?

Installer chaque outil individuellement avec composer global require pose plusieurs problèmes :
  • Les dépendances globales entrent en conflit entre elles (typiquement des dépendances communes comme nikic/php-parser ou symfony/console).
  • On veut parfois passer d’une version à l’autre du même outil selon les projets.
  • Sur le long terme, on oublie de mettre à jour les packages globaux.
  • On préfère éviter d’installer globalement un outil dont on n’a besoin qu’une seule fois.
cpx lui-même est distribué comme un PHAR autonome, sans dépendances Composer à l’exécution : l’installer globalement ne crée donc aucun conflit.

Réécriture complète en v2.0

En v2.0, cpx a été entièrement réécrit et est désormais distribué sous forme de PHAR autonome. L’usage de base (cpx <package-name> <command> [arguments]) et le répertoire de cache ~/.cpx sont conservés. La branche 1.x est gelée : ni corrections de bugs ni correctifs de sécurité ne sont prévus. Pour mettre à niveau, il suffit de réinstaller globalement.
La v2.0 requiert PHP 8.3 ou plus récent.

Nouveautés de la v2.0

Priorité aux binaires locaux

Comme npx, si un binaire est déjà installé dans le projet, cpx l’exécute en priorité avant d’envisager d’installer une copie isolée. cpx remonte à partir du répertoire courant pour trouver le projet Composer le plus proche et exécute le binaire correspondant dans vendor/bin (le bin-dir par défaut).
Pour forcer l’usage de la copie isolée, utilisez --skip-local.

Exécuter directement un répertoire de package local

Vous pouvez cibler directement le répertoire d’un package Composer en cours de développement pour en exécuter le binaire.
Le répertoire cible doit contenir un composer.json valide et ses dépendances doivent être préalablement installées dans vendor/autoload.php. Dans ce cas, cpx n’exécute pas Composer et ne recopie/ne met pas le package en cache.

cpx exec et cpx tinker

Plusieurs raccourcis sont fournis pour exécuter rapidement du code PHP. Au sein d’un projet Laravel, cpx exec amorce complètement l’application, y compris la configuration, les façades et le .env (la variable $app est utilisable). cpx tinker invoque le php artisan tinker du projet lui-même (si laravel/tinker est installé). En dehors, cpx lance directement le shell PsySH. Dans vos scripts, cpx_require('vendor/package') (renommé depuis composer_require() en 1.x) permet d’autoloader un package à la volée.

Alias

Pour éviter d’avoir à retenir des noms de packages longs, définissez vos propres raccourcis.
La liste des alias intégrés pour les packages populaires (présente en 1.x) a été supprimée : vous devrez éventuellement les redéfinir vous-même.

Mode non interactif et sortie JSON

cpx détecte automatiquement un environnement non interactif via laravel/agent-detector (détection d’agent IA), une redirection de l’entrée standard ou les flags --no-interaction / -n. Dans ce mode, les commandes internes de gestion comme installed, aliases, alias, unalias, clean ou update renvoient une seule ligne JSON à la place du texte formaté. Depuis un terminal interactif, l’option --json donne le même résultat.

Principaux changements par rapport à la v1.x (commandes)

Pages associées

Le cache dans ~/.cpx et les anciennes versions de packages sont migrés automatiquement vers le nouveau format ; cependant, les packages exécutés avec une contrainte de version sont gérés sous un nouveau nom de répertoire, ce qui déclenche une réinstallation lors de la première utilisation. Les copies devenues obsolètes issues de la v1.x peuvent être supprimées avec cpx clean.

Dépôt laravel/cpx

Le code source et le README à jour.

Guide de mise à niveau cpx 2.0

Marche à suivre détaillée pour passer de la 1.x à la 2.x.
Dernière modification le 2 août 2026