Torihaji's Growth Diary

Little by little, no hurry.

huskyを個人開発プロジェクトに入れてみた。

はじめに

みなさん、こんにちは torihaziです。

今日はhuskyというものを現在開発中の個人開発中projectに導入してみました。

所管としては やり忘れるbuildテストやlinter、formatterを

絶対手動でやらざるを得ないaddとかcommit、push時に実行してくれるやつなので忘れっぽい人には

いいなと思いました。

huskyとは

typicode.github.io

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

入れる

Get started | Husky

pnpm add --save-dev husky

これで入れます。

pnpm exec husky init

こうすると

  • rootに.huskyディレクトリが作成
  • その中にpre-commitという名前のファイルが作成
  • package.jsonにprepare: "husky"という項目が追加

使う

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してくれんかという感じです。

悩ましい。。。