コンテンツへスキップ

Laravel Pint

イントロダクション

Laravel Pintは、ミニマリストのための独断的なPHPコードスタイル修正ツールです。PintはPHP CS Fixerの上に構築されており、コードスタイルをクリーンで一貫性のある状態に保つことを簡単にします。

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

インストール

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

1composer require laravel/pint --dev

Pintの実行

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

1./vendor/bin/pint

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

1./vendor/bin/pint app/Models
2 
3./vendor/bin/pint app/Models/User.php

Pintは、更新したすべてのファイルの完全なリストを表示します。Pintを呼び出すときに-vオプションを指定すると、Pintの変更に関するさらに詳細な情報を表示できます。

1./vendor/bin/pint -v

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

1./vendor/bin/pint --test

Gitに基づいて、指定したブランチと異なるファイルのみをPintに変更させたい場合は、--diff=[branch]オプションを使用できます。これは、CI環境(GitHubアクションなど)で、新規または変更されたファイルのみを検査することで時間を節約するために効果的に使用できます。

1./vendor/bin/pint --diff=main

Gitによるとコミットされていない変更があるファイルのみをPintに変更させたい場合は、--dirtyオプションを使用します。

1./vendor/bin/pint --dirty

コードスタイルエラーのあるファイルをPintに修正させ、かつエラーが修正された場合にゼロ以外の終了コードで終了させたい場合は、--repairオプションを使用します。

1./vendor/bin/pint --repair

Pintの設定

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

1{
2 "preset": "laravel"
3}

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

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

プリセット

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

1./vendor/bin/pint --preset psr12

必要であれば、プロジェクトのpint.jsonファイルでプリセットを設定することもできます。

1{
2 "preset": "psr12"
3}

Pintが現在サポートしているプリセットは、laravelperpsr12symfonyemptyです。

ルール

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

しかし、必要であれば、pint.jsonファイルで特定のルールを有効または無効にしたり、emptyプリセットを使用してルールをゼロから定義したりできます。

1{
2 "preset": "laravel",
3 "rules": {
4 "simplified_null_return": true,
5 "array_indentation": false,
6 "new_with_parentheses": {
7 "anonymous_class": true,
8 "named_class": true
9 }
10 }
11}

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

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

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

1{
2 "exclude": [
3 "my-specific/folder"
4 ]
5}

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

1{
2 "notName": [
3 "*-my-file.php"
4 ]
5}

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

1{
2 "notPath": [
3 "path/to/excluded-file.php"
4 ]
5}

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

GitHubアクション

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

1name: Fix Code Style
2 
3on: [push]
4 
5jobs:
6 lint:
7 runs-on: ubuntu-latest
8 strategy:
9 fail-fast: true
10 matrix:
11 php: [8.4]
12 
13 steps:
14 - name: Checkout code
15 uses: actions/checkout@v4
16 
17 - name: Setup PHP
18 uses: shivammathur/setup-php@v2
19 with:
20 php-version: ${{ matrix.php }}
21 extensions: json, dom, curl, libxml, mbstring
22 coverage: none
23 
24 - name: Install Pint
25 run: composer global require laravel/pint
26 
27 - name: Run Pint
28 run: pint
29 
30 - name: Commit linted files
31 uses: stefanzweifel/git-auto-commit-action@v5

Laravelは最も生産的な方法です
ソフトウェアを構築、デプロイ、監視します。