La commande artisan dev exécute quatre processus de développement dans un terminal unique : serveur HTTP, worker de file d'attente, visionneuse de logs (Pail) et Vite. Jusqu'à Laravel 13.25, toutes les sorties étaient écrites dans le même flux, ce qui causait des problèmes de lisibilité quand plusieurs processus se logeaient simultanément – par exemple, une reconstruction Vite masquant une trace de pile de Pail.

Laravel 13.25 remplace le gestionnaire de processus concurrently par @laravel/multiplex, une nouvelle interface terminal qui isole chaque sortie de processus et ne nécessite aucune installation ni configuration. L'intégration a été apportée par Joe Tannenbaum (PR #61100).

Trois modes d'affichage

Le mode Tabs (par défaut) attribue à chaque processus son propre onglet. Les utilisateurs passent d'un onglet à l'autre pour lire un flux à la fois. Les processus individuels peuvent être redémarrés ou avoir leurs logs effacés indépendamment, et un processus défaillant redémarre automatiquement sans arrêter toute la pile.

Le mode Stream reproduit l'ancien comportement mais avec des capacités de défilement et de recherche, affichant toutes les sorties dans un flux unique entrelacé.

Le mode Inline produit du texte brut sans interface utilisateur, sélectionné automatiquement quand il n'y a pas de TTY (dans des conteneurs, l'intégration continue ou sous des superviseurs de processus).

Les drapeaux d'exécution sélectionnent un mode : `php artisan dev --tabs`, `php artisan dev --stream` ou `php artisan dev --inline` (formes courtes : -t, -s, -i). Les utilisateurs peuvent basculer entre les modes Tabs et Stream pendant que l'interface s'exécute.

Méthodes de configuration

Sept méthodes DevCommands configurent le comportement au niveau du projet dans la méthode boot() d'un fournisseur de services : - `DevCommands::tabs()` – mode Tabs (par défaut) - `DevCommands::stream()` – flux entrelacé - `DevCommands::inline()` – sortie brute - `DevCommands::withTimestamps()` – ajoute un timestamp à chaque ligne - `DevCommands::disableAutoRestart()` – laisse les processus défaillants arrêtés - `DevCommands::bufferSize(lignes)` – taille du buffer circulaire par processus en mode Tabs - `DevCommands::streamBufferSize(lignes)` – nombre total de lignes conservées en mode Stream

Les drapeaux de ligne de commande outrepassent les paramètres du fournisseur. En mode Tabs, chaque processus gère son propre buffer circulaire, empêchant un processus verbeux (comme Vite) de repousser les autres sorties hors de vue.

Comportement de redémarrage automatique

Les processus défaillants redémarrent automatiquement par défaut, remplaçant le comportement --kill-others-on-fail précédent où une défaillance arrêtait toute la pile. Cela correspond à des scénarios courants : un worker de file d'attente s'arrête à cause d'une erreur fatale lors de la modification d'une classe Job, ou Vite échoue en raison d'une mauvaise importation. Le processus se rétablit quand le fichier est corrigé, sans nécessiter un redémarrage manuel. Utilisez `--no-restart` pour désactiver ce comportement par exécution, ou appelez `DevCommands::disableAutoRestart()` de manière permanente.

Support des plates-formes et exigences

Multiplex s'exécute nativement sur macOS et Linux. Windows continue d'utiliser concurrently ; les méthodes de mode et de buffer sont non-opérationnelles là, bien que `--timestamps` et `--no-restart` se traduisent par des drapeaux concurrently équivalents.

Node.js v22.13 ou plus récent est requis. Laravel épingle @laravel/multiplex à une version mineure spécifique et l'exécute via le gestionnaire de paquets du projet (pnpm dlx pour les projets pnpm, npx pour npm) sans ajouter une dépendance à package.json.

Fonctionnalités supplémentaires

La fonctionnalité de recherche fonctionne en modes Tabs et Stream. Le drapeau `--json` émet des événements JSON délimités par saut de ligne au lieu de sortie formatée, permettant l'intégration avec des extensions d'éditeur ou des tableaux de bord consommant des données de processus structurées.

Correction SERVER_HOST

Une correction connexe de la même version corrige un problème où des arguments explicites de ligne de commande pour le processus serve outrepassaient les valeurs par défaut basées sur l'environnement. Le serveur était enregistré comme `serve --host=localhost`, ce qui ignorait la variable d'environnement SERVER_HOST. La valeur par défaut est désormais simplement `serve`, restaurant la capacité d'exposer le serveur de développement à d'autres appareils du réseau : `SERVER_HOST=0.0.0.0 php artisan dev`. Les utilisateurs qui ont enregistré des commandes serveur personnalisées pour contourner ce problème peuvent les supprimer.