Laravel Pint
Вступ
Laravel Pint - це думковий фіксатор стилю коду PHP для мінімалістів. Pint побудований на основі PHP CS Fixer і робить простим забезпечення чистоти та узгодженості стилю вашого коду.
Pint автоматично встановлюється з усіма новими Laravel застосунками, тому ви можете почати використовувати його негайно. За замовчуванням Pint не потребує жодної конфігурації та виправлятиме проблеми зі стилем коду у вашому коді, дотримуючись суб'єктивного стилю кодування Laravel.
Встановлення
Pint включено в останні релізи фреймворку Laravel, тому встановлення зазвичай не потрібне. Однак, для старіших застосунків, ви можете встановити Laravel Pint через Компонувальник:
composer require laravel/pint --dev
Запуск Pint
Ви можете вказати Pint виправити проблеми зі стилем коду, викликавши бінарний файл pint, який доступний у каталозі vendor/bin вашого проекту:
./vendor/bin/pint
Якщо ви хочете, щоб Pint працював у паралельному режимі (експериментально) для покращення продуктивності, ви можете використовувати опцію --parallel:
./vendor/bin/pint --parallel
Ви також можете запустити 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, ви можете використовувати опцію --diff=[branch]. Це можна ефективно використовувати у вашому середовищі CI (наприклад, GitHub actions), щоб заощадити час, перевіряючи лише нові або змінені файли:
./vendor/bin/pint --diff=main
Якщо ви хочете, щоб 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
Пресети
Пресети визначають набір правил, які можуть бути використані для виправлення проблем зі стилем коду у вашому коді. За замовчуванням 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,
"array_indentation": false,
"new_with_parentheses": {
"anonymous_class": true,
"named_class": true
}
}
}
Pint побудований на основі PHP CS Fixer. Тому ви можете використовувати будь-які з його правил для виправлення проблем зі стилем коду у вашому проєкті: PHP CS Fixer Configurator.
Виключення файлів / папок
За замовчуванням Pint перевірятиме всі файли .php у вашому проекті, за винятком тих, що знаходяться в директорії vendor. Якщо ви бажаєте виключити більше папок, ви можете зробити це, використовуючи параметр конфігурації exclude:
{
"exclude": [
"my-specific/folder"
]
}
Якщо ви бажаєте виключити всі файли, що містять заданий шаблон імені, ви можете зробити це, використовуючи параметр конфігурації notName:
{
"notName": [
"*-my-file.php"
]
}
Якщо ви хочете виключити файл, вказавши точний шлях до файлу, ви можете зробити це, використовуючи параметр конфігурації notPath:
{
"notPath": [
"path/to/excluded-file.php"
]
}
Безперервна інтеграція
GitHub Actions
Щоб автоматизувати перевірку вашого проекту за допомогою Laravel Pint, ви можете налаштувати GitHub Actions для запуску Pint щоразу, коли новий код завантажується на GitHub. Спочатку переконайтеся, що ви надали "Дозволи на читання та запис" для робочих процесів у GitHub у розділі Settings > Actions > General > Workflow permissions. Потім створіть файл .github/workflows/lint.yml з наступним вмістом:
name: Fix Code Style
on: [push]
jobs:
lint:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
php: [8.4]
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
