💨
依存してる npm パッケージの作者を調べる
日々いろんな npm パッケージに依存してるわけですが、その作者が気になるときがある。
単純に気になるときもあるけど、調査が必要になるときもある。
たとえば最近 substack の GitHub アカウントが削除された。npm から消えたわけじゃないから、すぐに困るってことはないけど、誰にも移譲されていないリポジトリがあっとして、もし自分がそれに依存してしまっていたら代替を探したくなる。
また、自分が関わっている OSS プロジェクトでは過去のメンテナーが作ったたくさんのライブラリに依存していて、その人がすでにアクティブでなくなったいるため、やや悪い影響が出始めていたりする。
そのため、自分の依存している npm パッケージの作者をシュッと調べて、フォークするか移管してもらうか色々判断できると便利である。
ということでそれに役に立つツールを作った。
npm に publish してあるので package.json
が存在するディレクトリにいる状態で
npx your-deps-authors
を実行すると次のようなテーブルが表示される。
╔══════════════════════════════════╤═══════════════════╤════════════════════╗
║ name │ author │ maintainers ║
╟──────────────────────────────────┼───────────────────┼────────────────────╢
║ prettier │ James Long │ jlongster, ║
║ │ │ lydell, ║
║ │ │ thorn0, ║
║ │ │ vjeux, ║
║ │ │ fisker, ║
║ │ │ suchipi, ║
║ │ │ duailibe, ║
║ │ │ ikatyang, ║
║ │ │ azz, ║
║ │ │ sosukesuzuki, ║
║ │ │ prettier-bot ║
╟──────────────────────────────────┼───────────────────┼────────────────────╢
║ eslint │ Nicholas C. Zakas │ openjsfoundation, ║
║ │ │ eslintbot, ║
║ │ │ nzakas, ║
║ │ │ ivolodin ║
╟──────────────────────────────────┼───────────────────┼────────────────────╢
║ npm-run-all │ Toru Nagashima │ mysticatea ║
╟──────────────────────────────────┼───────────────────┼────────────────────╢
║ table │ Gajus Kuizinas │ gajus, ║
║ │ │ gajus-table ║
╟──────────────────────────────────┼───────────────────┼────────────────────╢
║ @types/node │ │ types ║
╟──────────────────────────────────┼───────────────────┼────────────────────╢
║ eslint-plugin-import │ Ben Mosher │ jfmengels, ║
║ │ │ ljharb, ║
║ │ │ benmosher ║
╟──────────────────────────────────┼───────────────────┼────────────────────╢
║ typescript │ Microsoft Corp. │ typescript-bot, ║
║ │ │ weswigham, ║
║ │ │ sanders_n, ║
║ │ │ andrewbranch, ║
║ │ │ minestarks, ║
║ │ │ rbuckton, ║
║ │ │ sheetalkamat, ║
║ │ │ typescript-deploys ║
╟──────────────────────────────────┼───────────────────┼────────────────────╢
║ eslint-plugin-unicorn │ Sindre Sorhus │ sindresorhus ║
╟──────────────────────────────────┼───────────────────┼────────────────────╢
║ eslint-config-prettier │ Simon Lydell │ lydell, ║
║ │ │ thorn0 ║
╟──────────────────────────────────┼───────────────────┼────────────────────╢
║ npm-registry-fetch │ GitHub Inc. │ fritzy, ║
║ │ │ darcyclarke, ║
║ │ │ nlf, ║
║ │ │ gar, ║
║ │ │ lukekarrys ║
╟──────────────────────────────────┼───────────────────┼────────────────────╢
║ pkg-up │ Sindre Sorhus │ sindresorhus ║
╟──────────────────────────────────┼───────────────────┼────────────────────╢
║ @typescript-eslint/parser │ │ jameshenry ║
╟──────────────────────────────────┼───────────────────┼────────────────────╢
║ @typescript-eslint/eslint-plugin │ │ jameshenry ║
╚══════════════════════════════════╧═══════════════════╧════════════════════╝
これで author や maintainers をざっくり見て「ヤバそうじゃね?」と思ったら詳しく調査しにいく、みたいなユースケースで使える。
ちなみに、これは package.json
の dependencies
と devDependencies
しか見てない。ロックファイルも見ない。peerDependencies
とかも見るようにしたほうがいいかもしれない。
本当は JSON とかでも吐けるようにして jq とかでフィルターできると便利なんだろうけど一旦テーブル表示と grep でいいやと思っている。
Discussion