Laravel Pint

Вступ

Laravel Pint - це думковий фіксатор стилю коду PHP для мінімалістів. Pint побудований на основі PHP CS Fixer і робить простим забезпечення чистоти та узгодженості стилю вашого коду.

Pint автоматично встановлюється з усіма новими Laravel застосунками, тому ви можете почати використовувати його негайно. За замовчуванням Pint не потребує жодної конфігурації та виправлятиме проблеми зі стилем коду у вашому коді, дотримуючись суб'єктивного стилю кодування Laravel.

Встановлення

Pint включено в останні релізи фреймворку Laravel, тому встановлення зазвичай не потрібне. Однак, для старіших застосунків, ви можете встановити Laravel Pint через Компонувальник:

composer require laravel/pint --dev

Запуск Pint

Ви можете вказати Pint виправити проблеми зі стилем коду, викликавши бінарний файл pint, який доступний у каталозі vendor/bin вашого проекту:

./vendor/bin/pint

Якщо ви хочете, щоб Pint працював у паралельному режимі (експериментально) для покращення продуктивності, ви можете використовувати опцію --parallel:

./vendor/bin/pint --parallel

Ви також можете запустити Pint для конкретних файлів або каталогів:

./vendor/bin/pint app/Models
 
./vendor/bin/pint app/Models/User.php

Pint відобразить детальний список всіх файлів, які він оновлює. Ви можете переглянути ще більше деталей про зміни 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 не потребує жодної конфігурації. Однак, якщо ви бажаєте налаштувати пресети, правила або перевірені папки, ви можете зробити це, створивши файл 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 Configurator.

Виключення файлів / папок

За замовчуванням Pint перевірятиме всі файли .php у вашому проекті, за винятком тих, що знаходяться в директорії vendor. Якщо ви бажаєте виключити більше папок, ви можете зробити це, використовуючи параметр конфігурації exclude:

{
    "exclude": [
        "my-specific/folder"
    ]
}

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

{
    "notName": [
        "*-my-file.php"
    ]
}

Якщо ви хочете виключити файл, вказавши точний шлях до файлу, ви можете зробити це, використовуючи параметр конфігурації notPath:

{
    "notPath": [
        "path/to/excluded-file.php"
    ]
}

Безперервна інтеграція

GitHub Actions

Щоб автоматизувати перевірку вашого проекту за допомогою Laravel Pint, ви можете налаштувати GitHub Actions для запуску Pint щоразу, коли новий код завантажується на GitHub. Спочатку переконайтеся, що ви надали "Дозволи на читання та запис" для робочих процесів у GitHub у розділі Settings > Actions > General > Workflow permissions. Потім створіть файл .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@v4
 
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          extensions: json, dom, curl, libxml, mbstring
          coverage: none
 
      - name: Install Pint
        run: composer global require laravel/pint
 
      - name: Run Pint
        run: pint
 
      - name: Commit linted files
        uses: stefanzweifel/git-auto-commit-action@v5