【husky + lint-staged】コミット前にコードをチェックしてコードエラーを発見してみた
仕事ってどれくらいの規模で進めていますか?
おそらく完全に一人でやっているという方はいないのではないかなと思います。
Web制作で考えても複数人で同じリポジトリ内のファイルを触ること多いですよね。
ただ人それぞれ自分の書き方というものが多い。
なので気がつけばコードの統一性がなくバラバラ。
なんてことがあると思います。
今回はそんなことが起こらないように最初からルールを決めて逸脱しているものは自動で修正、もしくはエラーを吐いてコミットできないようにしてしまおうというツールの導入です。
IMPORTANT
最初に投稿してからかなり変わったので、この記事は2024年2月に更新しました。 記事更新時点ではhuskyはv9.0.10、lint-stagedはv15.2.2となっています。
Husky & lint-staged
今回使用するツールは「Husky」と「lint-staged」というツールになります。
ざっくり説明すると、Huskyはコミットする前に指定の動作を行うことができるツール、lint-stagedはgitにstageされているファイルをチェックするツールです。
この2つを連携させて、「コミットする前にstageされているファイルをチェックしてルールを守ってない書き方はエラーにする」という動作を行います。
インストール
インストールはいつものようにnpm
もしくはyarn
で行います。
注意してほしいのが、v6から大きく使用方法が変わっているということ。
古いバージョンの説明をしていることが多いので注意してください。
huskyの設定
では、まずhuskyの設定をします。
初期化コマンドを入力し、必要なファイルを作成してください。
そうすると.husky
というディレクトリが生成されていると思います。
NOTE
かつてhusky install
で初期化していましたが現在は上記のコマンドに変更されたようです。
それからpackage.json
に以下を追記します。
NOTE
上記の記述は不要になりました。
lint-stagedの設定
こちらも、package.json
に追記します。
はい、内容を見て何を行うか分かるかと思います。
今回はeslint
とstylelint
をコミット前に挟んでコードの修正を行ってからコミットを行うという流れになってます。
ですので、事前に両方のlinterはインストールを済ませてください。
installした際に自動でhuskyの設定も完了させる
NOTE
こちらもかつては手動で追記していましたが、husky init
をすると追加されます。
2つの連携
では最後にこれらを連携させます。
以下のコマンドを入力し、新たなファイルを作成してください。
NOTE
こちらのコマンドも不要になりました。.pre-commit
はhusky init
で生成されます。
完了すると、.husky
ディレクトリにpre-commit
というファイルが生成され、その中に実行コマンドが書かれていると思います。
現在のバージョンでは.pre-commit
を手動、もしくは以下コマンドで入力します。
最初からテストコマンドが入っていますが、これは不要であれば削除して問題ありません。
これで設定完了です。
実際に試してみましょう。
いつもより少しcommitの時間がかかると思います。
ターミナルにもlintが走っているのを確認できますね。
以上で2つの連携は完了です。
まとめ
いかがだったでしょうか。
今回の記事も開発に必須ではないと思いますが、チームで進めるのであれば導入したほうがコードをきれいに保てて良いのではないかと思いました。
古いバージョンとかなり設定方法が変わるようになっていて僕はそこで少しハマったので誰かの助けになれればと思います。