🌊
ビルドやテストが失敗する状態でコミットしてしまわないようにする
こんにちは。shootaceanです。
個人開発を進める上で、ビルドやテストが失敗する状態なのにプッシュしてしまいCI/CDで失敗していたことに気づく、というのをやってしまったので、それを防ぐための仕組みをつくります。
やることはシンプルで、
git commit
前に自動的に npm run build
や npm run test
を実行し、失敗した場合はコミットさせない、というものです。
それを実現するために husky
を使い git pre-commit
フックを設定します。
typicode/husky: Git hooks made easy 🐶 woof!
Git - Git フック
huskyをインストールする
$ npm i -D husky
$ npx husky-init && npm i
npx husky-init && npm i
することで、.husky
ディレクトリに git pre-coomit
時に実行されるシェルスクリプトが生成されます。
ビルドとテストが実行されるようにする
上記の手順で生成された .husky/pre-commit
ファイルに実行したいコマンドを追記するだけです。
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npm run build
npm run test
追記後、正常に設定できたかの確認をしましょう。
適当なファイルを修正してエラーが起きる状態でコミットをした際に、コミット出来ていなければOKです。
ちなみにエラーが発生した際はメッセージの最後に以下のような文言が表示されます。
...省略
husky - pre-commit hook exited with code 1 (error)
git exited with error code 1
まとめ
フィードバックサイクルは早ければ早いほど開発スピードが上がります。
プッシュ時の GitHub Actions
や Circle CI
で気づくよりも、手元のローカル環境で気付けるほうが早いので、ケアレスミスが多い方はぜひ試していただければと思います!
Discussion