husky v4 から v7 へ移行する手順の覚書
3 min read
husky を v4.3.8 から v7.0.0 へアップグレードする。
※ v5 はライセンス問題があるため、MIT に戻った v7 へアップグレードする
CHANGELOG
- husky-4-to-6 CLI → husky-4-to-7 CLI に変更になったので修正
環境
- husky: 4.3.8 -> 7.0.0
- lint-staged: 10.5.4
方法
husky のドキュメントにあるMigrate from v4 to v7を参照した。
husky-4-to-7 CLI
husky-4-to-7 CLI という CLI が用意されており、簡単に移行ができる模様。
npm で管理しているプロジェクトだったので、README の内容通り下記を実行した。
npm install husky@7 --save-dev \
&& npx husky-init \
&& npm exec -- github:typicode/husky-4-to-7 --remove-v4-config
実行すると要所でOk to proceed? (y)
と訊かれるのでy
と続けていく。
removed 16 packages, changed 2 packages, and audited 950 packages in 4s
8 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
Need to install the following packages:
husky-init
Ok to proceed? (y) y
husky-init updating package.json
setting prepare script to command "husky install"
husky - Git hooks installed
husky - created .husky/pre-commit
please review changes in package.json
Need to install the following packages:
github:typicode/husky-4-to-6
Ok to proceed? (y) y
husky - created .husky/pre-commit
husky - deleted husky field from package.json
⚠️ pre-commit hook may need to be manually updated to be run via package manager.
Examples:
jest → npx --no-install jest
→ yarn jest
jest && eslint → npx --no-install jest && npx --no-install eslint
→ yarn jest && yarn eslint
commitlint -E HUSKY_GIT_PARAMS → npx --no-install commitlint --edit $1
→ yarn commitlint --edit $1
See https://typicode.github.io/husky/#/?id=migrate-from-v4-to-v7
処理後、以下のような差分が出る。
- 変更:
- package.json
- package-lock.json
- 追加:
.husky/.gitignore
.husky/pre-commit
package.json の差分
+ "prepare": "husky install"
- "husky": "^4.3.8",
+ "husky": "^6.0.0",
- "husky": {
- "hooks": {
- "pre-commit": "lint-staged"
- }
- },
.husky/pre-commit
CLI で移行されていた記述だと package.json に記述していた"pre-commit": "lint-staged"
のlint-staged
がそのまま記述されていた。これを実行できるようにnpx
経由で実行できるようにnpx lint-staged
を.husky/pre-commit
に追加した。
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx lint-staged
これで pre-commit 時に lint-staged の設定のものが適応される。
参考: https://typicode.github.io/husky/#/?id=locally-installed-binaries
まとめ
- 移行は husky-4-to-7 CLI を実行するだけで良い
.husky/pre-commit
に lint-staged を実行できるようにする- lint-staged の定義はそのままで良い