Husky v9でのインストールコマンド非推奨に対処する方法
問題の説明
pnpm exec husky install
を実行した際に "install command is deprecated" エラーが発生します。
これはPrettierの公式インストールドキュメントの手順に従ってGitフックを設定しようとした際に発生する問題で、主に以下の環境で確認されています:
- Node.js バージョン: v20.11.0
- pnpm バージョン: v8.15.0
- OS: Windows
このエラーはHusky v9からinstall
コマンドが非推奨となったことが原因です。Prettierの公式ドキュメントが最新のHusky仕様に追従していないため発生します。
根本原因
Husky v9.0.1でhusky install
コマンドが完全に削除され、husky
または husky some/dir
コマンドに変更されました。
この変更はHuskyのv9.0.1リリースノートで公式に発表されています。
正しい解決方法
手順1: Huskyコマンドの置き換え
従来のhusky install
の代わりに、プロジェクトルートで以下のいずれかのコマンドを実行します:
bash
# デフォルトの.huskyディレクトリを使用する場合
pnpm exec husky
# カスタムディレクトリを指定する場合
pnpm exec husky custom-directory
手順2: Pre-commitフックの追加
.husky
ディレクトリが作成されたら、Prettierフックを追加します:
bash
# プリコミットフックファイルの作成
pnpm exec husky add .husky/pre-commit "pnpm exec prettier --write ."
# 実行権限の付与(Linux/Mac環境の場合)
chmod +x .husky/pre-commit
手順3: package.jsonの設定確認
プロジェクトのpackage.json
に以下を追加:
json
{
"scripts": {
"prepare": "husky"
}
}
動作メカニズム
prepare
スクリプトは以下を自動化します:
npm install
/pnpm install
実行時に自動トリガーhusky
初期化コマンドの実行.git/hooks
へのフック登録
バージョン管理のベストプラクティス
依存バージョンの固定方法
package.json
でHuskyのメジャーバージョンを固定:
json
{
"devDependencies": {
"husky": "^9.0.0"
}
}
移行時のチェックリスト
- 既存
.husky
ディレクトリの削除bashrm -rf .husky
- 古いフック設定のクリーンアップbash
git config --unset core.hooksPath
node_modules
の再インストールbashpnpm install --force
トラブルシューティング
Windows環境特有の注意点
pnpm exec
の代わりにhusky.cmd
を直接実行可能cmd.\node_modules\.bin\husky.cmd
- パス区切り文字は
/
を使用(Windowsでも動作)bashpnpm exec husky .husky/pre-commit
代替ソリューション
公式ドキュメントが更新されるまでの暫定的な対処法:
bash
# Husky v8を使用する場合(非推奨)
pnpm add husky@8 -D
pnpm exec husky install
旧バージョン使用時の注意
Husky v8はメンテナンスモードに入っており、新しいNode.jsバージョンとの互換性問題が生じる可能性があります。可能な限りv9への移行を推奨します。
最終検証手順
- フックの動作テスト:bash
git add . git commit -m "test commit"
- Prettierが自動実行されることを確認
- 書式変更がコミットに含まれるのを確認
最新のHuskyドキュメントは常に公式GitHubリポジトリで確認することをお勧めします。PrettierのGitフック設定は、こうした変更に適応することで安定して動作します。