mcpField
K
knip-dead-code

knip-dead-code

github.com/laurigates開発5947 回インストール今日更新
リポジトリ

knip-dead-code について

JavaScript と TypeScript のプロジェクト向けに、Knip で静的に到達不能なファイル、依存関係、エクスポートを検出するスキルです。コードベースの整理や CI での問題確認に役立ちます。

主な機能

  1. 01未使用のファイル、依存関係、エクスポートの検出
  2. 02未使用の型と列挙メンバーの検出
  3. 03エントリーポイントと一般的なツールの自動判別
  4. 04本番コードまたは変更ファイルのスキャン
  5. 05CI 向け終了コードと JSON レポート

活用シーン

  1. 01プロジェクトの未使用依存関係の削除
  2. 02ライブラリの未使用エクスポートの確認
  3. 03CI でのデッドコード問題の防止
  4. 04基準ブランチからの変更ファイルのみをスキャン

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/laurigates/claude-plugins --skill knip-dead-code

インストール後、Claude Code で/knip-dead-codeを入力して読み込まれたか確認します。

同梱ファイルREFERENCE.md

詳細

Knip によるデッドコード検出

Knip は、JavaScript および TypeScript プロジェクト内の未使用のコード、依存関係、エクスポートを見つけるための包括的なツールです。コードベースをクリーンに保ち、デッドコードが蓄積する前に検出するのに役立ちます。

Knip は静的に到達不能なコードを検出します。未使用の CSS(PurgeCSS)、実行時のデッドコードパス、バンドルサイズの削減(バンドラーのツリーシェイキング)、重複した依存関係(npm-dedupe)には、別のツールを使用してください。

主な機能

Knip とは?

  • 未使用項目の検出:ファイル、依存関係、エクスポート、型、enum メンバー
  • プラグインシステム:80 以上のフレームワークとツールに対応
  • 高速:大規模なコードベースを数秒で解析
  • 実用的:ファイルの場所を明示したわかりやすいレポート
  • CI 対応:ビルドを失敗させる終了コード

インストール

# Project-local (recommended)
bun add --dev knip

# Verify installation
bunx knip --version

基本的な使い方

# Run Knip (scans entire project)
bunx knip

# Show only unused dependencies
bunx knip --dependencies

# Show only unused exports
bunx knip --exports

# Show only unused files
bunx knip --files

# Production mode (only check production dependencies)
bunx knip --production

# Exclude specific issue types
bunx knip --exclude-exports-used-in-file

# Output JSON (for CI)
bunx knip --reporter json

# Debug mode (show configuration)
bunx knip --debug

設定

自動検出(設定不要)

Knip は次の項目を自動的に検出します。

  • エントリーポイント(package.json の main、exports、bin)
  • フレームワーク(Next.js、Vite、Remix など)
  • テストランナー(Vitest、Jest、Playwright)
  • ビルドツール(ESLint、TypeScript、PostCSS)

一般的なプロジェクトでは設定は不要です。

knip.json(明示的な設定)
{
  "$schema": "https://unpkg.com/knip@latest/schema.json",
  "entry": ["src/index.ts", "src/cli.ts"],
  "project": ["src/**/*.ts"],
  "ignore": ["**/*.test.ts", "scripts/**"],
  "ignoreDependencies": ["@types/*"],
  "ignoreBinaries": ["npm-check-updates"]
}
knip.ts(TypeScript の設定)
// knip.ts
import type { KnipConfig } from 'knip';

const config: KnipConfig = {
  entry: ['src/index.ts', 'src/cli.ts'],
  project: ['src/**/*.ts', 'scripts/**/*.ts'],
  ignore: ['**/*.test.ts', '**/*.spec.ts', 'tmp/**'],
  ignoreDependencies: [
    '@types/*', // Type definitions
    'typescript', // Always needed
  ],
  ignoreExportsUsedInFile: true,
  ignoreWorkspaces: ['packages/legacy/**'],
};

export default config;

よくあるパターン

未使用の依存関係のみを確認する
# Fastest check - only dependencies
bunx knip --dependencies

# Exit with error if any unused dependencies
bunx knip --dependencies --max-issues 0

CI で使用して、依存関係を厳密に管理します。

エクスポートのみを確認する(ライブラリ開発)
# Check for unused exports
bunx knip --exports

# Allow exports used in same file
bunx knip --exports --exclude-exports-used-in-file

ライブラリで使用して、パブリック API がクリーンであることを確認します。

本番用と開発用の依存関係
# Check production code only
bunx knip --production

# Check everything (including dev dependencies)
bunx knip

結果の解釈

出力例
No unused files
No unused dependencies
2 unused exports

src/utils.ts:
  - calculateTax (line 42)
  - formatDate (line 58)

src/types.ts:
  - UserRole (line 12)
問題の種類
種類説明対処
未使用のファイルどこからもインポートされていないファイル削除するか、エントリーポイントに追加する
未使用の依存関係package.json にあるが使用されていないパッケージ依存関係から削除する
未使用のエクスポートエクスポートされているが、どこからもインポートされていないエクスポートを削除するか、プライベートにする
未使用の型エクスポートされているが使用されていない型/インターフェース削除するか、内部用にする
未使用の enum メンバー参照されていない enum メンバーメンバーを削除する
重複したエクスポート複数のファイルから同じものがエクスポートされているエクスポートを統合する

エージェント向けの最適化

コンテキストコマンド
クイックスキャンbunx knip
依存関係のみbunx knip --dependencies
エクスポートのみbunx knip --exports
CI の厳格モードbunx knip --max-issues 0
本番環境のチェックbunx knip --production
JSON 出力bunx knip --reporter json
設定のデバッグbunx knip --debug
変更されたファイルbunx knip --changed --base main

クイックリファレンス

フラグ説明
--dependencies未使用の依存関係のみを確認
--exports未使用のエクスポートのみを確認
--files未使用のファイルのみを確認
--production本番用の依存関係のみを確認
--max-issues N問題が N 件を超えた場合に失敗
--reporter jsonCI 用の JSON 出力
--reporter compactコンパクトな出力
--debug設定の詳細を表示
--changed変更されたファイルのみを確認
--changed --base mainmain 以降に変更されたファイル
--workspace NAME指定したワークスペースを確認
--exclude-exports-used-in-file同じファイル内のエクスポートを無視

詳しい例、高度なパターン、ベストプラクティスについては、REFERENCE.md を参照してください。

参考資料

コメント