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"