huskyをインストールしたのに、pre-commitフックが動かない時にみる場所と対応方法
後からhuskyをプロジェクトに入れると、たまーにpre-commitが動かないことがあるので覚書。 現象 huskyをインストールして、.huskyrcに以下のようなpre-commitのタスクを書いても何もおきない […]
目次
後からhuskyをプロジェクトに入れると、たまーにpre-commitが動かないことがあるので覚書。
現象
huskyをインストールして、.huskyrc
に以下のようなpre-commitのタスクを書いても何もおきない
{
"hooks": {
"pre-commit": "echo 'hello'"
}
}
動いている様子が全くない。
$ git commit -m "some change"
[master 1f46900] some change
1 file changed, 1 insertion(+), 1 deletion(-)
みるべき点
この場合、pre-commitのフックがそもそも作成されていない可能性が非常に高い。
.git/hooksを調べる
lsコマンドなどで調べてみるのが一番早い
$ ls -la .git/hooks/
total 88
drwxr-xr-x 12 development staff 408 9 2 15:56 .
drwxr-xr-x 14 development staff 476 9 2 19:01 ..
-rwxr-xr-x 1 development staff 478 9 2 15:56 applypatch-msg.sample
-rwxr-xr-x 1 development staff 896 9 2 15:56 commit-msg.sample
-rwxr-xr-x 1 development staff 189 9 2 15:56 post-update.sample
-rwxr-xr-x 1 development staff 424 9 2 15:56 pre-applypatch.sample
-rwxr-xr-x 1 development staff 1642 9 2 15:56 pre-commit.sample
-rwxr-xr-x 1 development staff 1348 9 2 15:56 pre-push.sample
-rwxr-xr-x 1 development staff 4898 9 2 15:56 pre-rebase.sample
-rwxr-xr-x 1 development staff 544 9 2 15:56 pre-receive.sample
-rwxr-xr-x 1 development staff 1239 9 2 15:56 prepare-commit-msg.sample
-rwxr-xr-x 1 development staff 3610 9 2 15:56 update.sample
.sample
しかないので、そもそもフックが作成できていない状態なのがわかる。
あるべき姿
もし生成に成功していれば、このように表示される。
$ ls -la .git/hooks/ | grep pre-commit
-rwxr-xr-x 1 development staff 1405 9 2 19:04 pre-commit
対応方法
GitHubのIssueをみる限り、「入れ直す」が今の所ベターな対策の様子。
same here, this is a recurring issue with husky. previous version of husky you could fix this by doing
rm -rf .git/hooks
and then installing husky
npm install -D husky
this doesn’t work for me, but maybe it does for y’all.
https://github.com/typicode/husky/issues/445#issuecomment-458309598
[未検証] husky-upgradeでもいけるかもしれない
huskyを使っていると、たまにこのようなメッセージが表示されます。
Warning: Setting commit-msg script in package.json > scripts will be deprecated
Please move it to husky.hooks in package.json, a .huskyrc file, or a husky.config.js file
Or run ./node_modules/.bin/husky-upgrade for automatic update
See https://github.com/typicode/husky for usage
どうもhusky-upgradeコマンドでpre-commitのフックを作り直している様子です。
$ ./node_modules/.bin/husky-upgrade
husky > upgrading /Users/sandbox/test/practice-conventional-commit/package.json
moved scripts.commitmsg to husky.hooks.commit-msg
husky > done
もしかすると、こちらを使っても対処できるかもしれません。