knip について
Knip Code Cleanupは、Knipでコードベース内の未使用ファイル、依存関係、エクスポートを検出して整理するスキルです。設定のヒントを先に確認して調整し、誤検出を抑えてから削除に進みます。
主な機能
- 01Knipで未使用コードを検出
- 02設定のヒントを先に確認
- 03整理前に設定を調整
- 04ファイル、依存関係、エクスポートを優先順に処理
- 05本番コードのみの分析に対応
活用シーン
- 01孤立したプロジェクトファイルの削除
- 02未使用の依存関係やエクスポートの整理
- 03設定による誤検出の削減
- 04本番コードの個別チェック
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ brianlovin/ agent-config --skill knipインストール後、Claude Code で/knipを入力して読み込まれたか確認します。
詳細
Knip によるコードのクリーンアップ
knip を実行して、このコードベース内の未使用ファイル、依存関係、エクスポートを見つけて削除します。
セットアップ
-
knip が利用可能か確認します。
npx knip --versionを実行して確認します- 失敗する場合、または非常に時間がかかる場合は、package.json の devDependencies に
knipがあるか確認します - ローカルにインストールされていない場合は、存在するロックファイルに応じて
npm install -D knip(または pnpm/yarn/bun に相当するコマンド)でインストールします
-
Knip はファイル内の未使用インポートや変数を削除しません。これはリンターの役割です。Knip はプロジェクト全体を対象に、未使用ファイル、依存関係、エクスポートを見つけます。
ワークフロー
必ず、まず設定を確認するこのワークフローに従ってください。「knip を実行」や「コードベースをクリーンアップ」といった単純な指示でも、報告された問題に対処する前に knip を適切に設定してください。
ステップ 1:プロジェクトを把握する
- プロジェクトで使用しているフレームワークとツールを確認します(package.json を確認してください)
- knip の設定ファイル(
knip.json、knip.jsonc、または package.json のknipキー)があるか確認します - 設定ファイルがある場合は、改善できる点がないか確認します(下記の「設定のベストプラクティス」を参照)
ステップ 2:まず knip を実行し、設定に関するヒントを読む
npx knip
何よりも先に、設定に関するヒントを確認してください。これらは出力の先頭に表示され、誤検出を減らすための設定変更を提案します。
ステップ 3:knip.json を調整してヒントに対処する
報告された問題に対処する前に、設定に関するヒントを解消してください。一般的な調整は次のとおりです。
- 検出されたフレームワークに応じてプラグインを有効化/無効化する
- 標準的でないエントリーポイントのパターンを追加する
- モノレポのワークスペース設定を構成する
ステップ 4:ステップ 2~3 を繰り返す
設定を変更するたびに knip を再実行します。設定に関するヒントが解消され、誤検出が最小限になるまで繰り返してください。
ステップ 5:実際の問題に対処する
設定が確定したら、報告された問題に取り組みます。次の順に優先してください。
- 未使用ファイル — 最初に対処します(「受信箱ゼロ」の方法でノイズを最も減らせます)
- 未使用の依存関係 — package.json から削除します
- 未使用の devDependencies — package.json から削除します
- 未使用のエクスポート — 削除するか、内部用としてマークします
- 未使用の型 — 削除するか、
ignoreExportsUsedInFileを設定します(下記を参照)
ステップ 6:再実行して繰り返す
修正を行うたびに knip を再実行します。未使用ファイルを削除すると、新たに未使用となったエクスポートや依存関係が見つかることがよくあります。
設定のベストプラクティス
knip の設定を確認または作成する際は、次のルールに従ってください。
ignoreパターンは絶対に使用しないでください —ignoreは実際の問題を隠すため、ほとんどの場合は使用すべきではありません。必ず具体的な解決策を優先してください。その他のignore*オプション(ignoreDependencies、ignoreExportsUsedInFileなど)は、特定の問題の種類を対象とするため問題ありません。- 未使用のエクスポートされた型が多い場合 —
ignoreExportsUsedInFile: { interface: true, type: true }を追加します。これにより、同じファイル内でのみ使用される型という一般的なケースに対処できます。より広範な ignore オプションよりも、こちらを優先してください。 - 冗長なパターンを削除する — Knip はすでに
.gitignoreを尊重するため、node_modules、dist、build、.gitを無視する設定は冗長です。 - デフォルト設定で網羅されるエントリーパターンを削除する — 自動検出されたプラグインは、標準的なエントリーポイントをすでに追加します。重複して追加しないでください。
- 設定ファイルが未使用として表示される場合(例:
vite.config.ts)— ファイルを無視するのではなく、対応するプラグインを明示的に有効化または無効化します。 - Node.js の組み込みモジュールと一致する依存関係の場合(例:
buffer、process)—ignoreDependenciesに追加します。 - パスエイリアスからのインポートを解決できない場合 — knip の設定に
pathsを追加します(tsconfig.json のセマンティクスを使用します)。
本番モード
本番コードのみを対象にするには、--production を使用します。
npx knip --production
これにより、テストファイル、設定ファイル、その他の本番以外のエントリーポイントが除外されます。テストファイルを除外するために project または ignore パターンを使用しないでください。代わりに --production を使用してください。
クリーンアップの確信度
自動削除(高い確度):
- 明らかに内部向けの未使用エクスポート(パブリック API の一部ではないもの)
- 未使用の型エクスポート
- 未使用の依存関係(
package.jsonから削除します) - 明らかに孤立している未使用ファイル(エントリーポイントや設定ファイルではないもの)
先に確認(要確認):
- エントリーポイントまたは動的にインポートされている可能性のあるファイル
- パブリック API の一部である可能性のあるエクスポート(
index.ts、libのエクスポート) - CLI やピア依存関係を通じて使用されている可能性のある依存関係
src/index、lib/などのパスにあるものや、名前に「public」または「api」が含まれるファイル
これらを削除する前に、AskUserQuestion ツールを使用して確認してください。
自動修正
設定が確定し、結果に確信が持てたら、次を実行します。
# Auto-fix safe changes (removes unused exports and dependencies)
npx knip --fix
# Auto-fix including file deletion
npx knip --fix --allow-remove-files
設定を先に行うワークフローが完了するまで、--fix は使用しないでください。
エラー処理
knip がコード 2(「error loading file」などの予期しないエラー)で終了した場合:
- 設定ファイルがあるか確認します。ない場合は、プロジェクトのルートに
knip.jsonを作成します - knip.dev で既知の問題を確認します
- 構文やオプションのエラーがないか、設定リファレンスを確認します
- 修正後、再度 knip を実行します
よく使うコマンド
# Basic run
npx knip
# Production only (excludes test/config entry points)
npx knip --production
# Auto-fix what's safe
npx knip --fix
# Auto-fix including file deletion
npx knip --fix --allow-remove-files
# JSON output for parsing
npx knip --reporter json
注意事項
- モノレポのセットアップに注意してください。
--workspaceフラグが必要な場合があります - 一部のフレームワークでは、設定でプラグインを有効にする必要があります
- Knip はファイル内の未使用インポートや未使用変数を検出しません。その場合は ESLint または Biome を使用してください