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 の代わりに、プロジェクトルートで以下のいずれかのコマンドを実行します:
# デフォルトの.huskyディレクトリを使用する場合
pnpm exec husky
# カスタムディレクトリを指定する場合
pnpm exec husky custom-directory手順2: Pre-commitフックの追加
.huskyディレクトリが作成されたら、Prettierフックを追加します:
# プリコミットフックファイルの作成
pnpm exec husky add .husky/pre-commit "pnpm exec prettier --write ."
# 実行権限の付与(Linux/Mac環境の場合)
chmod +x .husky/pre-commit手順3: package.jsonの設定確認
プロジェクトのpackage.jsonに以下を追加:
{
"scripts": {
"prepare": "husky"
}
}動作メカニズム
prepareスクリプトは以下を自動化します:
npm install/pnpm install実行時に自動トリガーhusky初期化コマンドの実行.git/hooksへのフック登録
バージョン管理のベストプラクティス
依存バージョンの固定方法
package.jsonでHuskyのメジャーバージョンを固定:
{
"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
代替ソリューション
公式ドキュメントが更新されるまでの暫定的な対処法:
# 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フック設定は、こうした変更に適応することで安定して動作します。