CodeGridの記事「Knipでプロジェクトの不要なコードを見つける」で使うデモプロジェクトです。未使用のファイル・export・依存パッケージを意図的に含めています。
Knip 6.27.0での検証に合わせ、Node.js 20.19.0以上、または22.12.0以上を想定しています。
npm ci
npm startsrc/index.jsは環境変数LOCALEに対応するロケールファイルを読み込んで挨拶を組み立てます。既定はjaです。
こんにちは、CodeGrid!
このリポジトリにはknip.jsonを含めていません。記事の流れに沿って、まず設定なしで実行できます。
npx knipsrc/index.jsはロケールファイルを動的importで読み込むため、Knipは読み込み先を静的に特定できません。その結果、実際に使われているsrc/locales/ja.jsまで未使用ファイルとして報告されます。
Unused files (2)
src/debug.js
src/locales/ja.js
Unused dependencies (1)
picocolors package.json:13:6
Unused exports (1)
createLegacyGreeting function src/greeting.js:5:17
プロジェクトのルートにknip.jsonを作成し、ロケールファイルを解析の起点として伝えます。
{
"entry": ["src/locales/*.js"]
}もう一度実行すると、src/locales/ja.jsが消え、実際の未使用候補だけが残ります。
Unused files (1)
src/debug.js
Unused dependencies (1)
picocolors package.json:13:6
Unused exports (1)
createLegacyGreeting function src/greeting.js:5:17
報告内容を確認したら、--fixで修正を自動化できます。作業ツリーをきれいにしてから実行してください。
npx knip --fixpicocolorsがpackage.jsonから削除され、createLegacyGreetingからexportが外れます。依存を修正したらnpm installでlockfileも更新します。未使用ファイルの削除まで許可する場合は--allow-remove-filesを付けます。
npx knip --fix --allow-remove-filesKnipの報告は削除命令ではありません。設定と差分を確認したうえで判断してください。仕組みや設定の考え方は記事で解説しています。