En el artículo anterior sobre Laravel Pint vimos los conceptos básicos. Ahora profundizaremos en la configuración avanzada para adaptar Pint a las necesidades específicas de tu proyecto.
Compatibilidad y Requisitos
PHP 8.1 o superior
Laravel Pint 1.x
Archivo
pint.jsonen la raíz del proyecto
Creando el Archivo de Configuración
Laravel Pint busca automáticamente un archivo pint.json en la raíz de tu proyecto:
{
"preset": "laravel",
"rules": {
"array_syntax": {
"syntax": "short"
}
}
}Presets Disponibles
Pint incluye varios presets predefinidos que puedes usar como base:
{
"preset": "psr12"
}Los presets disponibles son: laravel, psr12, symfony, per y empty. El preset empty es útil cuando quieres definir todas las reglas manualmente.
Configuración de Reglas Personalizadas
Puedes activar, desactivar o configurar reglas específicas:
{
"preset": "laravel",
"rules": {
"binary_operator_spaces": {
"default": "single_space",
"operators": {
"=>": "align_single_space_minimal"
}
},
"blank_line_before_statement": {
"statements": ["return", "throw", "try"]
},
"ordered_imports": {
"sort_algorithm": "alpha",
"imports_order": ["class", "function", "const"]
},
"no_unused_imports": true,
"single_quote": true,
"trailing_comma_in_multiline": {
"elements": ["arrays", "arguments", "parameters"]
}
}
}Para desactivar una regla, simplemente asigna false:
{
"preset": "laravel",
"rules": {
"new_with_braces": false,
"concat_space": false
}
}Exclusión de Archivos y Carpetas
Define qué archivos o directorios debe ignorar Pint:
{
"preset": "laravel",
"exclude": [
"bootstrap/cache",
"storage",
"node_modules",
"vendor"
],
"notPath": [
"routes/console.php"
],
"notName": [
"*_helper.php"
]
}Limitando el Análisis a Carpetas Específicas
Si solo quieres analizar ciertas carpetas, usa la opción paths:
{
"preset": "laravel",
"paths": [
"app",
"config",
"database",
"routes",
"tests"
]
}Reglas Más Útiles para Laravel
Estas son algunas reglas recomendadas para proyectos Laravel:
{
"preset": "laravel",
"rules": {
"declare_strict_types": true,
"void_return": true,
"final_class": false,
"php_unit_method_casing": {
"case": "snake_case"
},
"class_attributes_separation": {
"elements": {
"const": "one",
"method": "one",
"property": "one"
}
},
"method_chaining_indentation": true,
"multiline_whitespace_before_semicolons": {
"strategy": "no_multi_line"
}
}
}Configuración para Strict Types Automático
Una configuración muy útil es forzar declare(strict_types=1) en todos tus archivos:
{
"preset": "laravel",
"rules": {
"declare_strict_types": true
}
}Al ejecutar ./vendor/bin/pint, añadirá automáticamente la declaración en todos los archivos PHP que no la tengan.
Integración con CI/CD
Para integrar Pint en tu pipeline de CI, usa el flag --test:
# En GitHub Actions o GitLab CI
./vendor/bin/pint --testEste comando retorna un código de error si hay archivos que necesitan formateo, sin modificar ningún archivo.
Ejemplo para GitHub Actions:
# .github/workflows/lint.yml
name: Code Style
on: [push, pull_request]
jobs:
pint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
- name: Install dependencies
run: composer install --no-progress
- name: Run Pint
run: ./vendor/bin/pint --testConfiguración Completa de Ejemplo
Esta es una configuración completa que uso en mis proyectos:
{
"preset": "laravel",
"exclude": [
"bootstrap/cache",
"storage"
],
"rules": {
"declare_strict_types": true,
"void_return": true,
"no_unused_imports": true,
"ordered_imports": {
"sort_algorithm": "alpha",
"imports_order": ["class", "function", "const"]
},
"single_quote": true,
"trailing_comma_in_multiline": {
"elements": ["arrays", "arguments", "parameters"]
},
"binary_operator_spaces": {
"default": "single_space"
},
"blank_line_before_statement": {
"statements": ["return", "throw", "try", "continue", "break"]
},
"class_attributes_separation": {
"elements": {
"method": "one",
"property": "one"
}
},
"method_chaining_indentation": true,
"php_unit_method_casing": {
"case": "snake_case"
}
}
}Conclusión
La configuración avanzada de Laravel Pint te permite mantener un estilo de código consistente adaptado a las convenciones de tu equipo. Combina esto con Git Hooks para automatizar el formateo antes de cada commit y tendrás un flujo de trabajo profesional.
Curso Laravel 12
Completo 2026
El único curso 100% actualizado que incluye Laravel 12, Livewire 3, Vue 3, React 19 e Inertia 2. Aprende con proyectos reales y las últimas funcionalidades.
star Incluido en cualquier suscripción