Laravel 13 a introduit un moyen unifié de démarrer tout ce dont un projet local a besoin : serveur de développement, worker de queue, sortie des logs et Vite. Au départ, le skeleton d'application y parvenait via un script dev dans composer.json qui enchaînait quatre commandes avec npx concurrently. Laravel 13.16 a remplacé cette approche par une commande first-party : php artisan dev. Le script composer dev reste dans le skeleton mais se contente désormais de déléguer.
Par défaut, quatre processus tournent : server (php artisan serve --host=localhost), queue (php artisan queue:listen --tries=1 --timeout=0), logs (php artisan pail --timeout=0) et vite (npm run dev). Le processus Pail n'est enregistré que si pcntl_fork est disponible, donc les utilisateurs Windows disposent des trois autres. Le processus vite détecte le gestionnaire de paquets via le lockfile du projet et exécute pnpm run dev ou l'équivalent Yarn/Bun sans configuration. En interne, la commande utilise toujours concurrently et, depuis la 13.18, passe --kill-others-on-fail pour qu'un processus en échec arrête toute la pile.
Les processus personnalisés s'enregistrent via la classe DevCommands, généralement dans la méthode boot de l'AppServiceProvider, protégée par un test d'environnement local. Quatre méthodes existent : artisan() préfixe avec php artisan, node() utilise la commande run du gestionnaire détecté, nodeExec() la variante exec (npx et compagnie), et register() accepte toute commande shell brute comme la CLI Stripe. Le second argument est le nom du processus ; les noms constituent l'identité d'un processus, donc enregistrer une commande sous un nom existant comme queue remplace le défaut — par exemple pour échanger queue:listen contre Horizon. Les enregistrements de l'application priment sur les défauts du framework, qui priment sur ceux des vendors. Des helpers de couleur optionnels comme purple() ou color('#ff6347') colorent la sortie.
Laravel 13.17 a ajouté php artisan dev:list, qui affiche chaque processus enregistré avec sa commande ainsi que le fichier et la ligne d'enregistrement. DevCommands::only('server', 'vite') et DevCommands::except('queue') filtrent la liste à l'exécution sans supprimer les enregistrements. La commande a été contribuée par Joe Tannenbaum (pull request #60412) et est documentée dans la documentation Artisan.
Commentaires
Pas encore de commentaire — écris le premier.
Lance la discussion
Pas de compte ni de mot de passe — saisis simplement ton adresse e-mail et nous t’envoyons un lien de connexion à usage unique. Première visite ? Tout se met en place automatiquement.
Ton évaluation sera appliquée automatiquement après ta connexion.
Vérifie ta boîte mail
Nous avons envoyé un lien de connexion à …. Ouvre-le sur cet appareil — cet onglet te connectera automatiquement.
Rien reçu ? Vérifiez le dossier spam — et marquez le message « Non spam » pour qu'il arrive directement la prochaine fois.