Skip to main content

Qu’est-ce qu’Artisan ?

Artisan est l’outil en ligne de commande (CLI) livré avec Laravel. Présent à la racine du projet sous forme d’un script artisan, il fournit de nombreuses commandes qui facilitent le développement et l’exploitation. Pour lister toutes les commandes disponibles, utilisez list.
Pour afficher l’usage d’une commande, préfixez-la par help.
Avec Laravel Sail, utilisez sail artisan à la place de php artisan. Les commandes s’exécutent alors dans le conteneur Docker.

Tinker

Laravel Tinker est un environnement REPL qui vous permet d’interagir depuis la ligne de commande avec toute votre application : modèles Eloquent, jobs, événements, etc.
Une fois lancé, vous pouvez exécuter du code PHP directement.
Tinker modifie réellement les données. Soyez très prudent en production. Il est particulièrement adapté aux vérifications et au débogage en local ou en staging.

Créer une commande personnalisée

Générer une commande

Générez le squelette d’une classe de commande avec make:command.
Le fichier app/Console/Commands/ImportProducts.php est créé.

Structure de base d’une commande

Une commande générée comprend trois éléments principaux : $signature, $description et handle().
Laravel 13 permet aussi d’utiliser des attributs PHP.

Déclarer les arguments et les options

$signature regroupe la définition du nom de la commande, des arguments et des options.

Récupérer les arguments et les options

Dans la méthode handle(), utilisez argument() et option() pour lire les valeurs.

input() — accesseurs typés

La méthode input() fournit des accesseurs typés pour les arguments et options, semblables à ceux d’une requête HTTP.
Pour récupérer directement une valeur par son nom (recherche à la fois dans les arguments et les options) :
Alors que argument() et option() retournent des chaînes, les accesseurs typés de input() renvoient une valeur du bon type. C’est pratique pour manipuler des dates, des nombres ou des Enums en toute sécurité.

Interaction avec l’utilisateur

Affichage de messages

Plusieurs méthodes permettent d’afficher des messages colorés dans la console.

Demander une saisie à l’utilisateur

Vous pouvez interagir avec l’utilisateur de manière interactive.

Barre de progression

Affichez clairement l’avancement d’un traitement volumineux.
Pour un contrôle plus fin, procédez manuellement.

Cas d’usage concrets

Commande d’import de données

Exemple pratique d’une commande d’import de produits depuis un fichier CSV.
1

Générer la commande

2

Implémenter la commande

3

Exécuter la commande

Commande de maintenance périodique

Exemple d’une commande de maintenance récurrente, comme la suppression de données anciennes.

Combinaison avec la planification

Les commandes que vous créez peuvent être planifiées dans routes/console.php. Consultez Planification de tâches pour plus de détails.

Tester une commande

Grâce aux outils de test de Laravel, vous pouvez vérifier le comportement de vos commandes Artisan.
Quelques assertions utiles avec la méthode artisan() :

La commande dev

La commande Artisan dev lance dans une seule fenêtre de terminal l’ensemble des processus nécessaires au développement local. Par défaut, le serveur de développement PHP, le worker de queue, la surveillance des logs via Pail et la compilation d’assets Vite s’exécutent en parallèle.
En interne, elle s’appuie sur le package npm concurrently pour gérer les processus. Chacun est étiqueté et coloré, ce qui permet de les distinguer facilement dans la sortie du terminal. Si l’un d’eux échoue, tous les autres sont arrêtés automatiquement. Voici les processus lancés par défaut :
Le processus vite détecte automatiquement votre gestionnaire de paquets Node (npm, pnpm, Yarn, Bun) et utilise la commande d’exécution appropriée.

Personnaliser les processus dev

Les processus lancés par dev peuvent être personnalisés via la classe DevCommands. Vous l’enregistrez typiquement dans la méthode boot de l’AppServiceProvider. La méthode register prend une commande sous forme de chaîne et un nom de processus facultatif.
Pour enregistrer une commande Artisan, utilisez artisan, qui préfixe automatiquement par php artisan.
De même, la méthode node préfixe par la commande d’exécution du gestionnaire de paquets détecté (par ex. npm run), tandis que nodeExec préfixe par sa commande exec (par ex. npx).
Enregistrer un processus avec le même nom qu’un processus par défaut remplace ce dernier. Vous pouvez par exemple lancer le serveur sur un autre port.
La couleur du label affichée dans le terminal peut aussi être personnalisée. Les couleurs disponibles sont blue, purple, pink, orange, green et yellow. La méthode color accepte également une valeur hex personnalisée.
Pour lister les processus dev enregistrés sans les démarrer, utilisez dev:list.

Filtrer les processus dev

La méthode only permet de démarrer uniquement certains processus. Inversement, except en exclut certains.
Si vous utilisez Horizon ou Reverb en local, enregistrez-les avec DevCommands::artisan() afin de tout lancer via un seul php artisan dev.

Commandes couramment utilisées

Dernière modification le 2 août 2026