Git Hooks & Automation
コミットやプッシュの直前にスクリプトを自動実行し、品質を強制します。
graph LR
A[git commit] --> B{pre-commit}
B -- Fail --> C[Stop Commit ❌]
B -- Pass --> D{commit-msg}
D -- Fail --> C
D -- Pass --> E[Commit Created ✅]
E --> F[git push]
F --> G{pre-push}
G -- Fail --> H[Stop Push ❌]
G -- Pass --> I[Push to Remote ✅] 1. Client-side Hooks
pre-commit
一番よく使われる。LintやFormatを実行し、エラーならコミット中止。
commit-msg
コミットメッセージの形式をチェック。「feat:」などを強制。
pre-push
プッシュ前にテストを実行。重いテストはここで。
2. Modern Setup: Husky + lint-staged
生のGit Hooksは扱いにくいため、Node.jsプロジェクトでは `husky` を使うのが標準です。
// package.json{ "scripts": { "prepare": "husky install" }, "lint-staged": { "*.{ts,tsx}": [ "eslint --fix", "prettier --write" ] }}
// .husky/pre-commit#!/bin/sh. "$(dirname "$0")/_/husky.sh"
npx lint-staged// .husky/commit-msg#!/bin/sh. "$(dirname "$0")/_/husky.sh"
# Ensure commit message follows Conventional Commitsnpx commitlint --edit "$1"