Saltar al contenido

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.json en 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 --test

Este 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 --test

Configuració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.

school Curso completo

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.

access_time 8 horas de contenido
layers 4 tecnologías en 1
update 100% actualizado
code Proyectos prácticos
Ver Curso Laravel 12 arrow_forward

star Incluido en cualquier suscripción

Rutas de aprendizaje