イントロダクション
Laravel Pint(ピント:PHP+lint)は、ミニマリストのための主張を持った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を起動する際に、-v
オプションを指定すれば、Pintが行う変更についてさらに詳しく確認できます。
./vendor/bin/pint -v
もし、実際にファイルを変更せず、Pintにコードのスタイルエラーを検査させたい場合は、--test
オプションを使用します。
./vendor/bin/pint --test
もし、Gitへコミットされていない変更のあるファイルだけをPintに修正させたい場合は、--dirty
オプションを使用します。
./vendor/bin/pint --dirty
Pintの設定
前述したように、Pintは設定を一切必要としません。しかし、プリセットやルール、インスペクトフォルダをカスタマイズしたい場合は、プロジェクトのルートディレクトリに、pint.json
ファイルを作成してください。
{
"preset": "laravel"
}
また、特定のディレクトリにあるpint.json
を利用したい場合は、Pintを起動する際に--config
オプションを指定してください。
pint --config vendor/my-company/coding-style/pint.json
プリセット
プリセットは、コード内のスタイルの問題を修正するために使用するルールセットを定義しています。デフォルトでPintは、laravel
プリセットを使用します。これは、Laravelの意見に基づいたコーディングスタイルに従って問題を修正するものです。しかし、Pintに--preset
オプションを指定することで、別のプリセットも指定できます。
pint --preset psr12
お望みならば、プロジェクトのpint.json
ファイルにプリセットを設定できます。
{
"preset": "psr12"
}
Pintが現在サポートしているプリセットは、laravel
、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の設定を参照してください。
ファイル/フォルダの除外
デフォルトでPintは、プロジェクト内のvendor
ディレクトリにあるものを除く、すべての.php
ファイルを検査します。もし、より多くのフォルダを除外したい場合は、exclude
設定オプションを使用して除外可能です。
{
"exclude": [
"my-specific/folder"
]
}
もし、指定した名前のパターンに一致するファイルをすべて除外したい場合は、notName
設定オプションを使用します。
{
"notName": [
"*-my-file.php"
]
}
もし、ファイルの正確なパスを指定して除外したい場合は、notPath
設定オプションを使用して除外できます。
{
"notPath": [
"path/to/excluded-file.php"
]
}