はじめに
みなさん、こんにちは torihaziです。
今日はhuskyというものを現在開発中の個人開発中projectに導入してみました。
所管としては やり忘れるbuildテストやlinter、formatterを
絶対手動でやらざるを得ないaddとかcommit、push時に実行してくれるやつなので忘れっぽい人には
いいなと思いました。
huskyとは
Automatically lint your commit messages, code, and run tests upon committing or pushing.
前提
next : 15.3.1 react: ^19.0.0 pnpm -v: 10.10.0 node -v: v22.15.0 husky: ^9.1.7
入れる
pnpm add --save-dev husky
これで入れます。
pnpm exec husky init
こうすると
使う
commit
git commit ~~とかgit pushとかに走るようにしたいのでその設定やらファイルを準備します。
まずcommit時になんとかしたい場合は ./husky/pre-commitファイルに追記します。
今回はcommit時にlinterやformatterを走らせたいので以下のようにしました。
pnpm run precommit
なおpackage.jsonの抜粋は以下です。
"scripts": {
"dev": "next dev --turbopack",
"build": "next build",
"start": "next start",
"lint": "next lint",
"lint:fix": "next lint --fix",
"format": "prettier --write .",
"fix": "pnpm run format && pnpm run lint:fix",
"type-check": "tsc --noEmit",
"precommit": "pnpm run fix",
"prepush": "pnpm run type-check && pnpm run build",
"prepare": "husky"
},
これでgit add して commitするとpnpm run precommitが走るようになります。
なお、このprecommitで修正されたファイルは再度 add して commitさせる必要があります。
(これどうにかならないのか私の使い方が下手なのか、要検討中のものです。)
(ちなみにlint-stagedもありますが、私の場合editorの自動保存でlinterやら走らせて処理が重複すると思ったんで入れてません)
ちなみに、このprecommit時にこけた場合、例えば next lint --fixで 何かfix対象外なerrorが出た場合、
その時はcommitできません。手動でそのerrrorを直してあげてリトライする必要があります。
そういうerrorとなると console.logを禁止するlint書いていた時ですかね。あれはfixしてくれなかったはずです。とかとか。
push
こちらについては納得の出来です。
新しく.husky/pre-pushファイルを作成し、下記を追記。
pnpm run prepush
これでpush時に走るようになります。
このprepushコマンドが正常終了したらpushできるといった感じです。
私はよくbuild通したりとかそういうの忘れて、貴重なprivateリポジトリのcicd時間を食いがちなので
これに関しては事前に落としてくれるので助かりますね。
終わりに
commitのところに関してはなんか上手いことできないかなという感じです。
めんどくさいに尽きるし、機械的にmessage作ってcommitしてくれんかという感じです。
悩ましい。。。