knip というツールを知ったので、備忘録としてまとめておく。 知っている人にとっては特に得るものは無いと思うので、ご留意いただきたい。
knip とは
一言でどんなツールか
JavaScriptとTypeScriptプロジェクトの「未使用コード・依存を自動検出してくれる静的解析ツール」 以前使われていたts-pruneはメンテナンスモードに入り、未使用の依存関係や相互再帰的なデッドコードを検出できないなどの制限があった
いつできたツールか
v1リリースが 2023/1/10 なので、今日時点で2年半経っている。 最新版は v5.62 で、5.0.0 は 2024/2/10 なので、高頻度でリリースを繰り返していることが分かる。
目的・解決しようとした課題
長期でメンテするプロダクトで生じる課題「デッドコードが溜まり、ビルドサイズ増大や保守性の低下が発生」を解決しようとしている。
既存ツール(ts-prune)はメンテナンスモード
注意点
動的に使用されるコードはカバーできないので、最終的に削除は人間の判断に委ねられている。
2025/7 時点では開発が活発でコミュニティでも信頼されているが、個人(Lars Kappert)ベースではありそう
感想
人が手動で実施する業務ではないし、中長期で価値を生むコードを書きたいと望むエンジニアには良いツール。
一方でそもそも動的な実行システムやコンパイル時にチェックできるのであれば発生しない問題でもあると思う。