前提
- GitHookとは
Git hooks入門 - Huskyとは
リントに便利な、開発者ツール「 husky 」🐶を使おう!
エラー内容
Huskyのpre-commit
を使用して、コミット時にLintを実行するようにスクリプトを書いてます。
いつも通り、git add
→git commit
をしたらエラー発生しました。
ERROR: The file "app/Http/Controllers/HogeController.php" does not exist.
ファイルが存在しない、、?
削除したファイルをインデックスに上げた後pre-commitすると、削除したファイルに対してLintを走らせようとするのでエラーがでてしまうようです。
結論
git diffに「--diff-filter=d
」オプションをつける。
--diff-filter=d
は削除されたファイルを除外するオプションです。
.husky/pre-commit
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
# `--diff-filter=d`で削除されたファイルはpre-commitの対象から除外
if git diff --cached --name-only | grep '\.php'; then
files=$(git diff --cached --name-only | grep '\.php')
./vendor/bin/sail composer lint $files && git add $files
fi
また、--diff-filter=D
にすると、削除したファイルのみ取得できるようフィルターをかけられるようです。