🥹

Laravel Pintという存在を知り感動...

に公開

「PSR-12に準拠するよう、コード整形をしてからコミットされるようにしたい!」

おさるさんはこんなことを思いました。
調べてみるとLaravelにはPintという便利機能があるそう…

https://laravel.com/docs/12.x/pint
https://readouble.com/laravel/12.x/ja/pint.html

使ってみて便利だったので記録しておく📝

🚀 セッティング

Pintが入っているかを確認する/インストールする

下記のコマンドを実行して、pintがインストールされているか確認する。

composer show laravel/pint

もし入ってなかったら下記のコマンドを実行してインストールしましょう!

composer require laravel/pint --dev

pint.jsonを作成する

ルートディレクトリにpint.jsonを作成します。
そして下記のようにPSR-12に則り、コード整形を行うよう設定します。

{
  "preset": "psr12",
  "exclude": [
    "storage",
    "vendor"
  ]
}

pre-commitフックを作成する

.git/hooks/pre-commitを作成し、下記のコードをコピペする。

#!/bin/sh
echo "🐒 Running Laravel Pint on staged PHP files..."

# ステージ済みのPHPファイルだけを取得して整形
echo "> Get staged PHP files..."
STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.php$')

if [ -z "$STAGED_FILES" ]; then
    echo "> No PHP files to format."
    exit 0
fi

echo "> Found PHP files:"
echo "$STAGED_FILES"

# Pint をステージ済みファイルに対して実行
./vendor/bin/pint --quiet $STAGED_FILES
echo "> Success!"

# 整形によって変更があったファイルを再ステージ
echo "$STAGED_FILES" | xargs git add

下記のコマンドでフックの実行権限を設定してあげる。

chmod +x .git/hooks/pre-commit

ちなみに--quietというオプションはChatGPTくんによると、

  • 実行時の出力を最小限に抑える
  • 整形処理中の詳細なログや警告を表示せず、
  • エラーや致命的な問題だけを表示するモード
    らしい。

完了!

これでコミットのたびにPintによる自動整形が実行されます!🎉
正確にはpre-commitフック実行 → 整形 → git add → コミットという流れです。

📚 まとめ

なんとも簡単にコード整形ができました🙌
Laravelは色々と便利すぎて、もはや困る...笑

✒️ 追記

2025/07/31

pre-commitフックを実行させずにコミットしたい場合は下記にてコミットする。

git commit --no-verify -m "コミットメッセージ"

Discussion