Skip to content

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スクリプトは以下を自動化します:

  1. npm install/pnpm install実行時に自動トリガー
  2. husky初期化コマンドの実行
  3. .git/hooksへのフック登録

バージョン管理のベストプラクティス

依存バージョンの固定方法

package.jsonでHuskyのメジャーバージョンを固定:

json
{
  "devDependencies": {
    "husky": "^9.0.0"
  }
}

移行時のチェックリスト

  1. 既存.huskyディレクトリの削除
    bash
    rm -rf .husky
  2. 古いフック設定のクリーンアップ
    bash
    git config --unset core.hooksPath
  3. node_modulesの再インストール
    bash
    pnpm install --force

トラブルシューティング

Windows環境特有の注意点

  • pnpm exec の代わりに husky.cmd を直接実行可能
    cmd
    .\node_modules\.bin\husky.cmd
  • パス区切り文字は/を使用(Windowsでも動作)
    bash
    pnpm exec husky .husky/pre-commit

代替ソリューション

公式ドキュメントが更新されるまでの暫定的な対処法:

bash
# Husky v8を使用する場合(非推奨)
pnpm add husky@8 -D
pnpm exec husky install

旧バージョン使用時の注意

Husky v8はメンテナンスモードに入っており、新しいNode.jsバージョンとの互換性問題が生じる可能性があります。可能な限りv9への移行を推奨します。

最終検証手順

  1. フックの動作テスト:
    bash
    git add .
    git commit -m "test commit"
  2. Prettierが自動実行されることを確認
  3. 書式変更がコミットに含まれるのを確認

最新のHuskyドキュメントは常に公式GitHubリポジトリで確認することをお勧めします。PrettierのGitフック設定は、こうした変更に適応することで安定して動作します。