Laravel Pint
Введение
Laravel Pint – это оптимизированный инструмент для форматирования кода на PHP для минималистов. Pint построен на основе PHP-CS-Fixer и обеспечивает простой способ поддержания чистого и последовательного стиля кода.
Pint автоматически устанавливается с каждым новым приложением Laravel, так что вы можете начать использовать его сразу. По умолчанию Pint не требует какой-либо настройки и автоматически исправляет проблемы со стилем кода в вашем коде, следуя оптимизированному стилю кодирования Laravel.
Установка
Pint включен в последние версии фреймворка Laravel, поэтому установка обычно не требуется. Однако для старых приложений вы можете установить Laravel Pint через Composer:
composer require laravel/pint --dev
Запуск Pint
Вы можете указать Pint исправить проблемы со стилем кода, вызвав двоичный файл pint
, который доступен в каталоге vendor/bin
вашего проекта:
./vendor/bin/pint
Вы также можете запустить Pint для определенных файлов или каталогов:
./vendor/bin/pint app/Models
./vendor/bin/pint app/Models/User.php
Pint отобразит подробный список всех файлов, которые он обновляет. Вы можете просмотреть еще больше информации об изменениях сделанных Pint, указав опцию -v
при вызове Pint:
./vendor/bin/pint -v
Если вы хотите, чтобы Pint просто проверил ваш код на наличие ошибок стиля, не внося изменения в файлы, вы можете использовать опцию --test
. Pint вернет ненулевой код, если будут обнаружены какие-либо ошибки стиля кода:
./vendor/bin/pint --test
Если вы хотите, чтобы Pint модифицировал только те файлы, которые имеют незафиксированные изменения согласно Git, вы можете использовать опцию --dirty
:
./vendor/bin/pint --dirty
Если вы хотите, чтобы Pint исправил любые файлы с ошибками стиля кода, а также завершил работу с ненулевым кодом завершения, если какие-либо ошибки были исправлены, вы можете использовать опцию --repair
:
./vendor/bin/pint --repair
Настройка Pint
Как уже упоминалось, для Pint не требуется какая-либо конфигурация. Однако, если вы хотите настроить предустановки, правила или проверяемые папки, вы можете сделать это, создав файл pint.json
в корневом каталоге вашего проекта:
{
"preset": "laravel"
}
Кроме того, если вы хотите использовать файл pint.json
из определенного каталога, вы можете указать опцию --config
при вызове Pint:
./vendor/bin/pint --config vendor/my-company/coding-style/pint.json
Предустановки (Presets)
Предустановки определяют набор правил, которые могут использоваться для исправления проблем со стилем кода в вашем коде. По умолчанию Pint использует предустановку laravel
, которая исправляет проблемы, следуя оптимизированному стилю кодирования Laravel. Однако вы можете указать другую предустановку, предоставив опцию --preset
Pint:
./vendor/bin/pint --preset psr12
Если хотите, вы также можете установить предустановку в файле pint.json
вашего проекта:
{
"preset": "psr12"
}
В настоящее время поддерживаемые предустановки Pint следующие: laravel
, per
, psr12
, symfony
и empty
.
Правила
Правила – это стандарты стиля, которые Pint будет использовать для исправления проблем со стилем кода в вашем коде. Как уже упоминалось выше, предустановки – это предопределенные группы правил, которые подходят для большинства проектов на PHP, поэтому обычно вам не нужно беспокоиться о отдельных правилах, которые они содержат.
Однако, если вы хотите, вы можете включить или отключить определенные правила в вашем файле pint.json
или используйте пресет empty
и определите правила с нуля:
{
"preset": "laravel",
"rules": {
"simplified_null_return": true,
"braces": false,
"new_with_braces": {
"anonymous_class": false,
"named_class": false
}
}
}
Исключение файлов / каталогов
По умолчанию Pint будет проверять все файлы .php
в вашем проекте, за исключением тех, которые находятся в каталоге vendor
. Если вы хотите исключить больше каталогов, вы можете сделать это, используя опцию конфигурации exclude
:
{
"exclude": [
"my-specific/folder"
]
}
Если вы хотите исключить все файлы, подходящие под определенный шаблон имени, вы можете сделать это, используя опцию конфигурации notName
:
{
"notName": [
"*-my-file.php"
]
}
Если вы хотите исключить файл, указав точный путь к нему, вы можете сделать это, используя опцию конфигурации notPath
:
{
"notPath": [
"path/to/excluded-file.php"
]
}
Непрерывная интеграция
Действия GitHub
Чтобы автоматизировать проверку вашего проекта с помощью Laravel Pint, вы можете настроить GitHub Actions для запуска Pint всякий раз, когда новый код отправляется на GitHub. Во-первых, обязательно предоставьте «разрешения на чтение и запись» рабочим процессам в GitHub в разделе Настройки > Действия > Общие > Разрешения рабочего процесса. Затем создайте файл .github/workflows/lint.yml
со следующим содержимым:
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"