Skip to content

Laravel Pint

はじめに

Laravel Pint は、ミニマリスト向けのオピニオンベースのPHPコードスタイルフィックスツールです。PintはPHP-CS-Fixerの上に構築されており、コードスタイルをクリーンで一貫性のある状態に保つことを簡単にします。

Pintはすべての新しいLaravelアプリケーションに自動的にインストールされるため、すぐに使用を開始できます。デフォルトでは、Pintは設定を必要とせず、Laravelのオピニオンベースのコーディングスタイルに従ってコードスタイルの問題を修正します。

インストール

PintはLaravelフレームワークの最近のリリースに含まれているため、通常はインストールが不要です。ただし、古いアプリケーションの場合は、Composerを介してLaravel Pintをインストールできます:

composer require laravel/pint --dev

Pintの実行

プロジェクトのvendor/binディレクトリにあるpintバイナリを呼び出すことで、Pintにコードスタイルの問題を修正させることができます:

./vendor/bin/pint

特定のファイルやディレクトリに対してPintを実行することもできます:

./vendor/bin/pint app/Models

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

Pintは更新するすべてのファイルの詳細なリストを表示します。Pintの変更についてさらに詳細を表示するには、Pintを呼び出す際に-vオプションを指定します:

./vendor/bin/pint -v

Pintにファイルを実際に変更せずにコードスタイルのエラーを検査させたい場合は、--testオプションを使用できます。コードスタイルのエラーが見つかった場合、Pintはゼロ以外の終了コードを返します:

./vendor/bin/pint --test

Gitに基づいて未コミットの変更があるファイルのみをPintに修正させたい場合は、--dirtyオプションを使用できます:

./vendor/bin/pint --dirty

コードスタイルのエラーを修正するファイルがある場合にゼロ以外の終了コードで終了するようにPintに指示したい場合は、--repairオプションを使用できます:

./vendor/bin/pint --repair

Pintの設定

前述のように、Pintは設定を必要としません。ただし、プリセット、ルール、または検査対象のフォルダをカスタマイズしたい場合は、プロジェクトのルートディレクトリにpint.jsonファイルを作成することで行うことができます:

{
    "preset": "laravel"
}

また、特定のディレクトリからpint.jsonを使用したい場合は、Pintを呼び出す際に--configオプションを指定できます:

./vendor/bin/pint --config vendor/my-company/coding-style/pint.json

プリセット

プリセットは、コードスタイルの問題を修正するために使用される一連のルールを定義します。デフォルトでは、Pintはlaravelプリセットを使用し、Laravelのオピニオンベースのコーディングスタイルに従って問題を修正します。ただし、Pintに--presetオプションを指定することで異なるプリセットを指定できます:

./vendor/bin/pint --preset psr12

また、プロジェクトのpint.jsonファイルでプリセットを設定することもできます:

{
    "preset": "psr12"
}

Pintが現在サポートしているプリセットは、laravelperpsr12symfony、およびemptyです。

ルール

ルールは、Pintがコードスタイルの問題を修正するために使用するスタイルガイドラインです。前述のように、プリセットはほとんどのPHPプロジェクトに最適な事前定義されたルールのグループであるため、通常は個々のルールについて心配する必要はありません。

ただし、必要に応じて、pint.jsonファイルで特定のルールを有効または無効にしたり、emptyプリセットを使用してルールを最初から定義したりできます:

{
    "preset": "laravel",
    "rules": {
        "simplified_null_return": true,
        "braces": false,
        "new_with_braces": {
            "anonymous_class": false,
            "named_class": false
        }
    }
}

PintはPHP-CS-Fixerの上に構築されています。したがって、プロジェクトのコードスタイルの問題を修正するために、そのルールを使用できます:PHP-CS-Fixer Configurator

ファイル / フォルダの除外

デフォルトでは、Pintはvendorディレクトリ内のファイルを除くすべての.phpファイルを検査します。さらにフォルダを除外したい場合は、exclude設定オプションを使用して行うことができます:

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

特定の名前パターンを含むすべてのファイルを除外したい場合は、notName設定オプションを使用して行うことができます:

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

ファイルの正確なパスを指定してファイルを除外したい場合は、notPath設定オプションを使用して行うことができます:

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

継続的インテグレーション

GitHub Actions

Laravel Pintを使用してプロジェクトのリンティングを自動化するには、GitHub Actionsを設定して、新しいコードがGitHubにプッシュされるたびにPintを実行できます。まず、GitHubのSettings > Actions > General > Workflow permissionsでワークフローに「Read and write permissions」を付与してください。次に、.github/workflows/lint.ymlファイルを以下の内容で作成します:

name: Fix Code Style

on: [push]

jobs:
  lint:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: true
      matrix:
        php: [8.3]

    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
        with:
          commit_message: "Fixes coding style"

ユーザーノート