| git | e064943bc6d9fe866685eae6e3214fe2f9e0fb5a |
|---|
Laravel Pint - это оптимизированный инструмент для форматирования кода на PHP для минималистов. Pint построен на основе PHP CS Fixer и обеспечивает простой способ поддержания чистого и последовательного стиля кода.
Pint автоматически устанавливается с каждым новым приложением Laravel, так что вы можете начать использовать его сразу. По умолчанию Pint не требует какой-либо настройки и автоматически исправляет проблемы со стилем кода в вашем коде, следуя оптимизированному стилю кодирования Laravel.
Pint включен в последние версии фреймворка Laravel, поэтому установка обычно не требуется. Однако для старых приложений вы можете установить Laravel Pint через Composer:
composer require laravel/pint --devВы можете указать Pint исправить проблемы со стилем кода, вызвав двоичный файл pint, который доступен в каталоге vendor/bin вашего проекта:
./vendor/bin/pintЕсли вы хотите, чтобы Pint работал в параллельном режиме (экспериментальном) для повышения производительности, вы можете использовать опцию --parallel:
./vendor/bin/pint --parallelПараллельный режим также позволяет указать максимальное количество запускаемых процессов с помощью параметра --max-processes. Если этот параметр не указан, Pint будет использовать все доступные ядра вашего компьютера:
./vendor/bin/pint --parallel --max-processes=4Вы также можете запустить Pint для определенных файлов или каталогов:
./vendor/bin/pint app/Models
./vendor/bin/pint app/Models/User.phpПо умолчанию Pint не форматирует шаблоны Blade. Если вы также хотите форматировать файлы .blade.php, используйте опцию --blade, которая включает правило Pint/laravel_blade для текущего запуска без изменения файла pint.json:
./vendor/bin/pint --bladePint отобразит подробный список всех файлов, которые он обновляет. Вы можете просмотреть еще больше информации об изменениях сделанных 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.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.
Помимо правил PHP CS Fixer, Pint предоставляет пользовательские правила с префиксом Pint/. Эти правила не включены по умолчанию, но вы можете включить их в файле pint.json.
Это правило форматирует ваши шаблоны Blade, применяя единообразные отступы, пробелы и форматирование атрибутов к файлам .blade.php. По умолчанию Pint не форматирует файлы Blade, поэтому для включения этой возможности нужно явно добавить правило в файл pint.json:
{
"preset": "laravel",
"rules": {
"Pint/laravel_blade": true
}
}После включения правила Pint будет форматировать шаблоны Blade вместе с PHP-файлами при каждом запуске:
./vendor/bin/pintЕсли вы хотите включить это правило только для одного запуска без изменения файла pint.json, используйте опцию --blade:
./vendor/bin/pint --bladeВнутри это правило использует Prettier вместе с плагинами prettier-plugin-blade и prettier-plugin-tailwindcss, поэтому на вашем компьютере должен быть установлен Node.js. При первом запуске Pint с включенным правилом Pint обнаружит отсутствующие зависимости Prettier и предложит установить их.
Note
Это правило автоматически пропускает файлы, которые обычно полагаются на собственное форматирование, например рекомендации Laravel Boost и email-представления, расположенные в каталогах resources/views/emails и resources/views/mail.
Это правило удаляет все комментарии и описательный текст docblock из вашего кода, оставляя только строки, содержащие аннотации с @, такие как @param, @return, @var, @phpstan-type и т. д.:
/**
* Get the posts for the user. [tl! remove]
* [tl! remove]
* @return HasMany<Post, $this>
*/
public function posts(): HasManyОднострочные комментарии и блочные комментарии без аннотаций @ удаляются полностью. Если вы хотите сохранить конкретный комментарий, вы можете добавить к нему префикс @note, @warning или @todo:
// @note This comment will be preserved.Чтобы включить это правило, добавьте его в файл pint.json:
{
"preset": "laravel",
"rules": {
"Pint/phpdoc_type_annotations_only": true
}
}Note
Это правило автоматически пропускает файлы в каталоге config, поскольку файлы конфигурации обычно полагаются на комментарии как на документацию.
По умолчанию Pint будет проверять все файлы .php в вашем проекте, за исключением тех, которые находятся в каталоге vendor. Если вы хотите исключить больше каталогов, вы можете сделать это, используя опцию конфигурации exclude:
{
"exclude": [
"my-specific/folder"
]
}Если вы хотите исключить все файлы, подходящие под определенный шаблон имени, вы можете сделать это, используя опцию конфигурации notName:
{
"notName": [
"*-my-file.php"
]
}Если вы хотите исключить файл, указав точный путь к нему, вы можете сделать это, используя опцию конфигурации notPath:
{
"notPath": [
"path/to/excluded-file.php"
]
}Чтобы автоматизировать проверку вашего проекта с помощью 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.4]
steps:
- name: Checkout code
uses: actions/checkout@v5
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
tools: pint
- name: Run Pint
run: pint
- name: Commit linted files
uses: stefanzweifel/git-auto-commit-action@v6