動作原理
フック:- ファイル編集時にトリガー: WriteまたはEditツールコール後に実行
- ファイル種別を検出: ファイル拡張子をチェックしてフォーマッターを決定
- 適切なフォーマッターを実行: prettier、black、gofmt、rustfmtなどを実行
- フィードバックを提供: フォーマット結果をユーザーに報告
- エラーを適切に処理: フォーマットが失敗しても継続
前提条件
あなたの言語スタックに対応するフォーマッターをインストールしてください:基本セットアップ
単一言語プロジェクト
JavaScript/TypeScriptプロジェクトの場合、.factory/hooks.jsonに以下を追加してください:
多言語プロジェクト
複数の言語を使用するプロジェクトでは、異なるファイル種別を処理するスクリプトを使用します。.factory/hooks/format.shを作成してください:
.factory/hooks.jsonに追加してください:
高度な設定
カスタム設定でフォーマット
プロジェクト固有のprettier設定を使用:リントとフォーマット
フォーマットとリント修正を組み合わせます。.factory/hooks/format-and-lint.shを作成してください:
.factory/hooks.jsonに追加してください:
条件付きフォーマット
特定のディレクトリ内のファイルのみをフォーマットします。.factory/hooks/format-src-only.shを作成してください:
.factory/hooks.jsonに追加してください:
実例
例1: Reactコンポーネントのフォーマット
- フック前
- フック後
例2: Pythonインポートソート
- フック前
- フック後
ベストプラクティス
1
読み取り専用モードから始める
まずフォーマッター設定を手動でテストします:
2
一貫した設定ファイルを使用
フォーマッター設定がコミットされていることを確認します:
3
適切なタイムアウトを設定
大きなファイルにはより長い時間が必要な場合があります:
4
フォーマッターエラーを適切に処理する
フォーマットに失敗してもDroidをブロックしないようにします:
5
Gitフック連携を検討する
一貫性のためpre-commitフックと組み合わせます:
トラブルシューティング
フォーマッターが見つからない
問題:command not foundエラー
解決策: フォーマッターをグローバルにインストールするか、npx/プロジェクトバイナリを使用してください:
フォーマットによりコードが破損
問題: フォーマッターが構文エラーを引き起こす 解決策: フォーマット後にファイル検証を追加してください:フックの実行が遅い
問題: フォーマットに時間がかかりすぎる 解決策: 変更されたファイルのみをフォーマットし、より高速なフォーマッターを使用してください:エディターのフォーマットと競合
問題: エディターとフックが異なるフォーマットを行う 解決策: 両方で同じ設定を使用してください:関連情報
- フックリファレンス - 完全なフックAPI文書
- Get started with hooks - 基本的なフックの紹介
- Code validation hooks - コード標準の強制
- Git workflow hooks - Gitとの統合
