💡

【husky v9対応】yarn husky installで`install command is deprecated`になる

2024/02/11に公開

はじめに

他の方の過去記事を参考にhuskyとlint-stageのセットアップを試したところ、そのまま実行すると以下のようにうまくいきませんでした。公式のリリース記事を確認すると、huskyのv8以前とv9でコマンド等が大幅に変わったようなので、v9でのセットアップ方法についてまとめたいと思います。

$ yarn husky install
yarn run v1.22.21
$ /hoge/node_modules/.bin/husky install
install command is deprecated
✨  Done in 0.46s.

# 実行しても.huskyが作成されない

動作環境

  • yarn : v1.22.21
  • husky : v9.0.10

huskyのインストール

ターミナル
# yarn
$ yarn add --dev husky
# npm
$ npm install --save-dev husky

初期化

initコマンドで.husky/pre-commitスクリプトの作成とpackage.jsonの設定まで行ってくれます。

ターミナル
$ yarn husky init
.husky/pre-commit
+ yarn test
package.json
{
    ...
    "scripts": {
+        "prepare": "husky"
    },
    ...
}

pre-commitスクリプトの編集

設定したいスクリプトをターミナルまたはエディタで直接編集します。

ターミナル
$ echo "yarn lint-staged" > .husky/pre-commit
.husky/pre-commit
- yarn test
+ yarn lint-staged

🎉セットアップ完了

以上でセットアップ完了です。pre-pushフックなども作成したい場合は手動でファイルを作成してください。

[補足]プロジェクトが.git直下でない場合(モノレポ構成など)

モノレポ構成などでhuskyを実行したいパッケージが.git直下にない場合はyarn husky init後、以下の手順で設定します。

.
├── .git/
├── backend/
└── frontend/
    ├── .husky/
    └── package.json

package.jsonのスクリプトを編集

package.json
{
    ...
    "scripts": {
-        "prepare": "husky"
+        "prepare": "cd .. && husky frontend/.husky"
    },
    ...
}

pre-commitスクリプトを編集

frontend/.husky/pre-commit
- yarn test
+ cd frontend && yarn lint-staged

参考

https://typicode.github.io/husky/get-started.html
https://github.com/typicode/husky/releases/tag/v9.0.1

Discussion