Saltar contenido

Laravel Pint

Introducción

Laravel Pint es un fijador de estilo de código PHP con opiniones para minimalistas. Pint está construido sobre PHP-CS-Fixer y facilita asegurarte de que tu estilo de código se mantenga limpio y consistente. Pint se instala automáticamente con todas las nuevas aplicaciones de Laravel, por lo que puedes comenzar a usarlo de inmediato. Por defecto, Pint no requiere ninguna configuración y solucionará problemas de estilo de código en tu código siguiendo el estilo de codificación definido de Laravel.

Instalación

Pint está incluido en las versiones recientes del framework Laravel, por lo que la instalación suele ser innecesaria. Sin embargo, para aplicaciones más antiguas, puedes instalar Laravel Pint a través de Composer:

composer require laravel/pint --dev

Ejecutando Pint

Puedes instruir a Pint para que arregle problemas de estilo de código invocando el binario pint que está disponible en el directorio vendor/bin de tu proyecto:

./vendor/bin/pint

También puedes ejecutar Pint en archivos o directorios específicos:

./vendor/bin/pint app/Models
 
./vendor/bin/pint app/Models/User.php

Pint mostrará una lista completa de todos los archivos que actualiza. Puedes ver aún más detalles sobre los cambios de Pint proporcionando la opción -v al invocar Pint:

./vendor/bin/pint -v

Si deseas que Pint simplemente inspeccione tu código en busca de errores de estilo sin cambiar realmente los archivos, puedes usar la opción --test. Pint devolverá un código de salida no cero si se encuentran errores de estilo de código:

./vendor/bin/pint --test

Si deseas que Pint solo modifique los archivos que tienen cambios no confirmados según Git, puedes usar la opción --dirty:

./vendor/bin/pint --dirty

Si deseas que Pint corrija cualquier archivo con errores de estilo de código pero también salga con un código de salida no cero si se corrigieron errores, puedes usar la opción --repair:

./vendor/bin/pint --repair

Configurando Pint

Como se mencionó anteriormente, Pint no requiere ninguna configuración. Sin embargo, si deseas personalizar los presets, reglas o carpetas inspeccionadas, puedes hacerlo creando un archivo pint.json en el directorio raíz de tu proyecto:

{
"preset": "laravel"
}

Además, si deseas utilizar un pint.json de un directorio específico, puedes proporcionar la opción --config al invocar Pint:

pint --config vendor/my-company/coding-style/pint.json

Preajustes

Los presets definen un conjunto de reglas que se pueden usar para corregir problemas de estilo de código en tu código. Por defecto, Pint utiliza el preset laravel, que corrige problemas siguiendo el estilo de codificación opinado de Laravel. Sin embargo, puedes especificar un preset diferente proporcionando la opción --preset a Pint:

pint --preset psr12

Si lo deseas, también puedes establecer el preset en el archivo pint.json de tu proyecto:

{
"preset": "psr12"
}

Los presets actualmente soportados por Pint son: laravel, per, psr12, symfony y empty.

Reglas

Las reglas son pautas de estilo que Pint utilizará para solucionar problemas de estilo de código en tu código. Como se mencionó anteriormente, los presets son grupos de reglas predefinidos que deberían ser perfectos para la mayoría de los proyectos PHP, por lo que típicamente no necesitarás preocuparte por las reglas individuales que contienen. Sin embargo, si lo deseas, puedes habilitar o deshabilitar reglas específicas en tu archivo pint.json o usar el preset empty y definir las reglas desde cero:

{
"preset": "laravel",
"rules": {
"simplified_null_return": true,
"braces": false,
"new_with_braces": {
"anonymous_class": false,
"named_class": false
}
}
}

Pint está construido sobre PHP-CS-Fixer. Por lo tanto, puedes usar cualquiera de sus reglas para corregir problemas de estilo de código en tu proyecto: Configurador de PHP-CS-Fixer.

Excluyendo Archivos / Carpetas

Por defecto, Pint inspeccionará todos los archivos .php en tu proyecto, excepto aquellos en el directorio vendor. Si deseas excluir más carpetas, puedes hacerlo utilizando la opción de configuración exclude:

{
"exclude": [
"my-specific/folder"
]
}

Si deseas excluir todos los archivos que contienen un patrón de nombre dado, puedes hacerlo utilizando la opción de configuración notName:

{
"notName": [
"*-my-file.php"
]
}

Si deseas excluir un archivo proporcionando una ruta exacta al archivo, puedes hacerlo utilizando la opción de configuración notPath:

{
"notPath": [
"path/to/excluded-file.php"
]
}

Integración Continua

GitHub Actions

Para automatizar el linting de tu proyecto con Laravel Pint, puedes configurar GitHub Actions para que ejecute Pint cada vez que se suba nuevo código a GitHub. Primero, asegúrate de otorgar "Permisos de lectura y escritura" a los flujos de trabajo dentro de GitHub en Configuración > Acciones > General > Permisos del flujo de trabajo. Luego, crea un archivo .github/workflows/lint.yml con el siguiente contenido:

name: Fix Code Style
 
on: [push]
 
jobs:
lint:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
php: [8.3]
 
steps:
- name: Checkout code
uses: actions/checkout@v4
 
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: json, dom, curl, libxml, mbstring
coverage: none
 
- name: Install Pint
run: composer global require laravel/pint
 
- name: Run Pint
run: pint
 
- name: Commit linted files
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "Fixes coding style"