知ったきっかけ
はてブかなんかで流れてきたサイトを見て知った。
Knipの紹介
Knip とは
Githubのreadme.mdからの転記※google翻訳使ってます
Knip は、 JavaScript および TypeScript プロジェクト内の未使用のファイル、依存関係、エクスポートを検出します。コードと依存関係が少ないほど、パフォーマンスが向上し、メンテナンスが減り、リファクタリングが容易になります。
要するに、使ってないコードを検出してくるCLIツール。
インストール方法
サイトのやつを転記
自分は、typescript
@types/node
はすでに入れてるプロジェクトでためしたので knip
のみをインストール。
npm install -D knip typescript @types/node
使い所
使い方は単純に、knip呼び出すだけ。
package.jsonのscriptsに追加しておくのも良さそう。
npx knip
実行すると、以下のような感じで出力される。
※↓自分の個人開発で使ってるコードに対して実行した結果↓
npx knip Unused files (4) src/main/api/gwYoutubeApi.ts src/main/api/superCut.ts src/main/events/markdown/listTableEvent.ts src/main/events/modal/confirmModal.ts Unused dependencies (7) @types/google.visualization package.json axios-oauth-client package.json clipboard-copy package.json dotenv package.json google-charts-node package.json gridjs-selection package.json path-browserify package.json Unused devDependencies (8) @fortawesome/free-regular-svg-icons package.json @webpack-cli/generators package.json html-webpack-plugin package.json less package.json less-loader package.json node-fetch package.json prettier package.json ts-node package.json Unlisted dependencies (1) preact src/main/screen/feed/galeWingGrid.ts Unused exports (1) getSiteList unknown src/main/screen/siteList.ts:18:18
いやー、色々試行錯誤して結局使わなくなったやつがいろいろ出てきた。。。
よくやりがちなんだよね、npmのライブラリ入れたけど、試して想定したのと違ってて、消すの面倒くさくてそのままにしておくケースが。。。
不要ライブラリ見てたけど、globalにインストールしたほうが良さそうなライブラリとかもあるな。。。
package.jsonが肥大化してくると、不要ライブラリがどれか分からなくなるので、検出してくれるのは助かる。
感想
怠惰な人ほど、効力がある気がする。
コードの状態が可視化されるのがいいところだと思った。
不要なライブラリは、なるべく消しておかないと、不要な混乱を招きがちだからな。
あと、Githubのセキュリティアラートに引っかかったりするのもある。
いろいろカスタマイズ可能っぽいけど、デフォルト状態でも十分使えるようなので、いれるだけでも効力ありそう。
設定を最小限で試せるのも、個人的に助かる。
設定ファイルでハマることが多いからな、自分は。
関連リンク
Declutter your JavaScript & TypeScript projects | Knip
TypeScript/JavaScriptの不要なコードを削除するツール「Knip」の紹介 - ベースマキナ エンジニアブログ