Skip to main content

Qué es Artisan

Artisan es la herramienta de interfaz de línea de comandos (CLI) que se incluye con Laravel. Existe como script artisan en la raíz del proyecto y ofrece numerosos comandos que agilizan el desarrollo y la operación. Para consultar la lista de comandos disponibles utiliza el comando list.
Para ver cómo se usa un comando, antepón help.
Si utilizas Laravel Sail, usa sail artisan en lugar de php artisan. Los comandos se ejecutarán dentro del contenedor Docker.

Tinker

Laravel Tinker es un entorno REPL que permite manipular de forma interactiva desde la línea de comandos toda la aplicación: modelos Eloquent, jobs, eventos, etc.
Una vez iniciado, puedes ejecutar código PHP directamente.
Tinker modifica los datos de verdad. Ten mucho cuidado al ejecutarlo en producción. Es adecuado para verificaciones y depuración en entornos local y staging.

Creación de comandos personalizados

Generar un comando

Con make:command generas la plantilla de una clase de comando.
Se genera app/Console/Commands/ImportProducts.php.

Estructura básica de un comando

La clase generada tiene tres elementos principales: $signature, $description y handle().
En Laravel 13 también se puede utilizar la forma con atributos PHP.

Definir argumentos y opciones

En $signature se define, todo junto, el nombre del comando, los argumentos y las opciones.

Obtener argumentos y opciones

Dentro del método handle() se obtienen los valores con argument() y option().

input() — accesores tipados

Con el método input() puedes obtener los argumentos y opciones del comando con los mismos accesores tipados que en una petición HTTP.
Si solo quieres obtener un nombre concreto, pásalo directamente (se busca tanto entre los argumentos como entre las opciones).
Mientras que argument() y option() devuelven cadenas, los accesores tipados de input() convierten al tipo adecuado. Es útil cuando quieres manejar fechas, números o enums de forma segura por tipo.

Interacción con el usuario

Salida de mensajes

Hay métodos para imprimir mensajes en color en la consola.

Preguntar al usuario

Se puede recibir entrada del usuario de forma interactiva.

Barra de progreso

Puedes mostrar el progreso de forma clara al procesar grandes cantidades de datos.
Si quieres controlarla en detalle, utiliza el siguiente método.

Casos de uso prácticos

Comando de importación de datos

Ejemplo práctico de un comando que importa datos de productos desde un archivo CSV.
1

Generar el comando

2

Implementar el comando

3

Ejecutar el comando

Comando de mantenimiento periódico

Ejemplo de un comando de mantenimiento periódico, como eliminar datos antiguos.

Combinación con la ejecución programada

Los comandos que crees se pueden ejecutar de forma programada en routes/console.php. Para más detalles, consulta Programación de tareas.

Pruebas de comandos

Con las funcionalidades de testing de Laravel puedes verificar el comportamiento de los comandos Artisan.
Ejemplos de métodos de aserción disponibles con artisan():

Comando dev

El comando Artisan dev arranca varios procesos necesarios para el desarrollo local en una única ventana de terminal. Por defecto se ejecutan en paralelo: el servidor de desarrollo de PHP, el worker de la cola, la monitorización de logs con Pail y la compilación de assets de Vite.
Internamente utiliza el paquete de npm concurrently para gestionar los procesos. A cada proceso se le asigna una etiqueta y un color, para que puedas distinguirlos fácilmente en la salida del terminal. Si alguno de los procesos falla, todos los demás también se detienen automáticamente. Los procesos que se ejecutan por defecto son los siguientes.
El proceso vite detecta automáticamente el gestor de paquetes de Node que estés usando (npm, pnpm, Yarn, Bun) y utiliza el comando de ejecución adecuado.

Personalizar los procesos de dev

Puedes personalizar los procesos que ejecuta el comando dev mediante la clase DevCommands. Normalmente se registran dentro del método boot del AppServiceProvider de la aplicación. El método register recibe la cadena de comando y, opcionalmente, un nombre de proceso.
Para registrar comandos Artisan puedes usar el método artisan, que antepone automáticamente php artisan.
De la misma forma, el método node antepone el comando de ejecución del gestor de paquetes detectado (por ejemplo, npm run), y nodeExec antepone el comando exec del gestor de paquetes (por ejemplo, npx).
Si registras un proceso con el mismo nombre que uno de los procesos por defecto, lo reemplazarás. Por ejemplo, puedes personalizar el proceso server para que use otro puerto.
También puedes personalizar el color de la etiqueta del proceso en el terminal. Los métodos de color disponibles son blue, purple, pink, orange, green y yellow. También puedes pasarle un color hex personalizado al método color.
Si quieres listar los procesos dev registrados sin arrancarlos, usa el comando dev:list.

Filtrar los procesos de dev

Con el método only puedes indicar que al ejecutar el comando dev solo arranquen determinados procesos. De la misma manera, con except puedes excluir procesos concretos.
Si en el desarrollo local también usas Horizon o Reverb, regístralos con DevCommands::artisan() y podrás arrancarlo todo con un único php artisan dev.

Resumen de comandos habituales

Última modificación el 2 de agosto de 2026