Pint — это средство исправления кода в стиле PHP, специально созданное для работы с Laravel. В этом уроке я покажу вам, как это работает и как автоматизировать его запуск до или после фиксации кода в репозитории.
Установка
Чтобы установить Pint, есть только один шаг - установка через Composer:
composer require laravel/pint --dev
Вот и все! Вы готовы использовать Pint.
Локальное использование Pint с помощью Git Hooks
Одним из вариантов использования Pint являются хуки предварительной фиксации. Это отлично подходит для тех, кто хочет отправлять свой код в репозиторий только тогда, когда он правильно отформатирован. Вот что вам нужно сделать:Создайте файл .git/hooks/pre-commit
со следующим содержимым:
Вот что делает этот скрипт:
#!/bin/sh
files=$(git diff --cached --name-only --diff-filter=ACM -- '*.php');
vendor/bin/pint $files -q
git add $files
- Получает список файлов, которые были изменены
.php
- Запускает Pint для этих файлов
- Добавляет эти файлы в фиксацию
Это обеспечивает бесшовную интеграцию с Git. Как только вы попытаетесь что-то зафиксировать, он переформатирует код и отправит его в репозиторий.
Использование Pint с GitHub Actions Другим вариантом использования Pint является GitHub Actions
. Для тех, кто не в курсе, у меня есть отдельное видео Advanced Laravel Testing: CI/CD with GitHub Actions.
Он автоматически запустит проверку на GitHub, которая отформатирует все файлы и сделает новую фиксацию. Чтобы это работало, вам нужно сделать следующее:Создайте файл .github/workflows/pint.yml
со следующим содержимым:.github/workflows/pint.yml
Вот что мы здесь делаем:
name: PHP Linting (Pint)
on:
workflow_dispatch:
push:
branches-ignore:
- 'dependabot/npm_and_yarn/*'
jobs:
Pint:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: shivammathur/setup-php@15c43e89cdef867065b0213be354c2841860869e
with:
php-version: '8.1'
- uses: actions/checkout@v3
- name: Copy .env
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
- name: Launch Pint inspection
run: vendor/bin/pint
- name: Commit changes
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: PHP Linting (Pint)
skip_fetch: true
- Мы используем
shivammathur/setup-php
действие для установки PHP - Мы используем
actions/checkout
действие для проверки кода - Копирование файла .env, если он не существует (на всякий случай, если вы хотите сделать больше, чем просто Pint с этой работой)
- Установка зависимостей с помощью Composer
- Бегущая пинта
- Фиксация изменений с помощью сообщения о фиксации
PHP Linting (Pint)
После того, как вы зафиксируете этот файл, вы должны увидеть, что на вкладке «Действия» есть новое задание:Нажав на него, вы получите всю информацию о задании:И, наконец, вы должны увидеть новый коммит в своем репозитории:
Вот и все! Теперь все ваши коммиты будут правильно отформатированы после отправки. Только не забывайте их вытаскивать!