エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

【小ネタ】不要コード検出ツール knip を試した

知ったきっかけ

はてブかなんかで流れてきたサイトを見て知った。

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のセキュリティアラートに引っかかったりするのもある。

いろいろカスタマイズ可能っぽいけど、デフォルト状態でも十分使えるようなので、いれるだけでも効力ありそう。
設定を最小限で試せるのも、個人的に助かる。
設定ファイルでハマることが多いからな、自分は。

関連リンク

GitHub - webpro-nl/knip: ✂️ Find unused files, dependencies and exports in your JavaScript and TypeScript projects. Knip it before you ship it!

Declutter your JavaScript & TypeScript projects | Knip

TypeScript/JavaScriptの不要なコードを削除するツール「Knip」の紹介 - ベースマキナ エンジニアブログ