はじめに
Laravel Pintは、ミニマリスト向けの意見を持ったPHPコードスタイルフィクサーです。PintはPHP-CS-Fixerの上に構築されており、コードスタイルをクリーンで一貫性のあるものに保つのが簡単です。
Pintはすべての新しいLaravelアプリケーションに自動的にインストールされるため、すぐに使用を開始できます。デフォルトでは、Pintは設定を必要とせず、Laravelの意見を持ったコーディングスタイルに従ってコードスタイルの問題を修正します。
インストール
Pintは最近のLaravelフレームワークのリリースに含まれているため、通常はインストールは不要です。ただし、古いアプリケーションの場合は、Composerを使用してLaravel Pintをインストールできます:
composer require laravel/pint --dev
Pintの実行
Pintにコードスタイルの問題を修正するよう指示するには、プロジェクトのvendor/bin
ディレクトリにある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
ファイルを実際に変更せずにスタイルエラーを検査したい場合は、--test
オプションを使用できます。コードスタイルエラーが見つかった場合、Pintはゼロ以外の終了コードを返します:
./vendor/bin/pint --test
Gitによる未コミットの変更があるファイルのみを修正したい場合は、--dirty
オプションを使用できます:
./vendor/bin/pint --dirty
コードスタイルエラーがあるファイルを修正し、エラーが修正された場合はゼロ以外の終了コードで終了したい場合は、--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
プリセットを使用します。ただし、--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,
"braces": false,
"new_with_braces": {
"anonymous_class": false,
"named_class": false
}
}
}
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を設定して、新しいコードがGitHubにプッシュされるたびにPintを実行できます。まず、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.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"