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)
Після того, як ви зробите цей файл, ви повинні побачити, що на вкладці Дії є нове завдання:Натискання на нього дасть вам всю інформацію про роботу:
І, нарешті, ви повинні побачити новий фікс у своєму сховищі:
Ось і все! Тепер усі ваші фіксації будуть належним чином відформатовані після натискання. Тільки не забудьте їх потягнути!