¿Qué es Laravel Pint?
Laravel Pint es una herramienta de corrección automática de estilo de código construida sobre PHP CS Fixer. Está diseñada para funcionar sin configuración desde el primer momento y formatear automáticamente el código siguiendo el estilo de Laravel. Al automatizar los típicos “comentarios de revisión sobre estilo de código” en el desarrollo en equipo, puedes centrarte en las revisiones que realmente importan.Instalación
Las aplicaciones Laravel recién creadas incluyen Pint automáticamente. En proyectos con versiones antiguas, instálalo con Composer.Formas de ejecutarlo
Uso básico
Corrige automáticamente todos los archivos.php del proyecto.
Lista de opciones
| Opción | Descripción |
|---|---|
--test | No modifica los archivos, solo detecta errores de estilo. Devuelve un código de salida distinto de cero si los hay |
--dirty | Aplica solo a los archivos con cambios no confirmados en Git |
--diff=[branch] | Aplica solo a los archivos con diferencias respecto a la rama indicada |
--repair | Corrige errores de estilo y, si hubo correcciones, devuelve un código de salida distinto de cero |
--parallel | Modo de ejecución en paralelo (experimental) para mejorar el rendimiento |
--max-processes=4 | Se combina con --parallel para indicar el número máximo de procesos |
-v | Muestra detalles de los cambios |
--config | Indica la ruta del pint.json a usar |
--preset | Indica el preset a usar |
Configuración
Puedes personalizar el comportamiento creando unpint.json en la raíz del proyecto.
Presets
Un preset es un conjunto de reglas. El preset por defecto eslaravel, con las reglas más adecuadas para proyectos Laravel.
| Preset | Descripción |
|---|---|
laravel | Estilo de código recomendado por Laravel (por defecto) |
psr12 | Estándar PSR-12 |
per | PER Coding Style |
symfony | Estilo de Symfony |
empty | Sin reglas. Se usa definiendo reglas por separado |
Personalizar reglas
Enpint.json puedes activar o desactivar reglas individualmente. Las reglas disponibles se encuentran en PHP CS Fixer Configurator.
Exclusión de archivos y carpetas
Puedes excluir carpetas concretas del análisis.notName.
notPath.
Configuración recomendada
Un ejemplo depint.json que funciona bien en el día a día:
| Regla | Efecto |
|---|---|
no_unused_imports | Al ponerla en false, no se eliminan los use no utilizados. En Pint su valor por defecto es true (eliminar), por lo que en un proyecto Laravel habitual no hace falta esta línea |
strict_comparison | Convierte == en === y != en !==, evitando bugs por conversiones de tipo inesperadas |
declare_strict_types | Añade automáticamente declare(strict_types=1); al principio del archivo, mejorando la seguridad de tipos |
no_unused_imports es una configuración pensada para desarrollo de paquetes. El valor por defecto de Pint es true (elimina los use no utilizados), así que en un proyecto Laravel normal esta línea no es necesaria. En el desarrollo de paquetes existe el patrón de activar/desactivar funcionalidades mediante imports de traits o interfaces, así que resulta práctico dejarla en false y cambiarla a true según cada paquete.Configuración de scripts en composer.json
Al registrar scripts para Pint encomposer.json, puedes ejecutarlo solo con composer pint.
En CI,
composer pint:test te permite detectar violaciones sin modificar archivos. Como --test devuelve un código de salida distinto de cero cuando hay errores, sirve como comprobación de paso/fallo en CI.Ejecución automática con GitHub Actions
Con GitHub Actions puedes ejecutar Pint y confirmar automáticamente las correcciones en cada push.Configurar los permisos del workflow
En el repositorio de GitHub, entra en Settings > Actions > General > Workflow permissions y activa “Read and write permissions”.