• Время чтения ~1 мин
  • 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