• Час читання ~2 хв
  • 24.05.2023

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)

Після того, як ви зробите цей файл, ви повинні побачити, що на вкладці Дії є нове завдання:Натискання на нього дасть вам всю інформацію про роботу:

І, нарешті, ви повинні побачити новий фікс у своєму сховищі:

Ось і все! Тепер усі ваші фіксації будуть належним чином відформатовані після натискання. Тільки не забудьте їх потягнути!

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Про автора CrazyBoy49z
WORK EXPERIENCE
Контакти
Ukraine, Lutsk
+380979856297