#はじめに
Laravel Pint はミニマリスト向けの意見に基づいたPHPコードスタイル修正ツールです。PintはPHP-CS-Fixerの上に構築されており、コードスタイルをクリーンかつ一貫性のある状態に保つのを簡単にします。
Pintは新しいLaravelアプリケーションには自動的にインストールされるため、すぐに使い始められます。デフォルトでは設定不要で、Laravelの意見に基づいたコーディングスタイルに従ってコードスタイルの問題を修正します。
#インストール
PintはLaravelフレームワークの最近のリリースに含まれているため、通常はインストール不要です。ただし、古いアプリケーションの場合はComposerでLaravel Pintをインストールできます:
composer require laravel/pint --dev
#Pintの実行
プロジェクトの vendor/bin ディレクトリにある pint バイナリを実行して、コードスタイルの問題を修正できます:
./vendor/bin/pint
特定のファイルやディレクトリに対してPintを実行することも可能です:
./vendor/bin/pint app/Models
./vendor/bin/pint app/Models/User.php
Pintは更新したすべてのファイルの詳細なリストを表示します。-v オプションを付けて実行すると、さらに詳しい変更内容を確認できます:
./vendor/bin/pint -v
ファイルを実際に変更せずにスタイルエラーを検査したい場合は、--test オプションを使えます:
./vendor/bin/pint --test
Gitで未コミットの変更があるファイルだけを修正したい場合は、--dirty オプションを使えます:
./vendor/bin/pint --dirty
#Pintの設定
前述の通り、Pintは設定不要です。ただし、プリセットやルール、検査対象フォルダをカスタマイズしたい場合は、プロジェクトのルートディレクトリに pint.json ファイルを作成してください:
{
"preset": "laravel"
}
また、特定のディレクトリにある pint.json を使いたい場合は、Pint実行時に --config オプションで指定できます:
pint --config vendor/my-company/coding-style/pint.json
#プリセット
プリセットはコードスタイルの問題を修正するためのルールセットを定義します。デフォルトではLaravelの意見に基づいた laravel プリセットを使いますが、--preset オプションで別のプリセットを指定できます:
pint --preset psr12
また、プロジェクトの pint.json ファイルでプリセットを設定することも可能です:
{
"preset": "psr12"
}
現在サポートされているプリセットは laravel、per、psr12、symfony です。
#ルール
ルールはPintがコードスタイルの問題を修正するために使うスタイルガイドラインです。プリセットはルールの事前定義されたグループで、多くのPHPプロジェクトに最適なので、通常は個別のルールを気にする必要はありません。
ただし、必要に応じて pint.json ファイルで特定のルールを有効化・無効化できます:
{
"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"
]
}