nodejs界の巨匠、sindresorhus先輩の作品にこんなmoduleがあります。
httpリクエストして取得するというmoduleですが、READMEにこんな一文があります。
Got is a human-friendly and powerful HTTP request library.
It was created because the popular request package is bloated: Install size
訳: Gotは人間にやさしく強力なHTTPリクエストライブラリです。
これは、一般的なリクエストパッケージが膨れているために作成されました。
それと共にこんなbadgeが張られています。
Package Phobia
Package Phobiaはnpmに上がっているmoduleのサイズを計測してくれるwebサービスです。
先ほどの例に上げたpopular request package
のインストールサイズは4.46MBということになります。
色々調べてみる
npm rankはnpmパッケージのランキングを自動集計して掲載しているgistです。
Top 1000 most depended-upon packages
という被依存数が多いパッケージのランキング上位から抜粋、Package Phobia
のバッジを張ってみました。
2018/12/08現在のランキングです。
- lodash - 52071
- request - 30113
- chalk - 27947
- commander - 24117
- express - 21873
- async - 20646
- react - 20184
- debug - 17892
- underscore - 15641
- bluebird - 15605
- moment - 15604
- fs-extra - 14409
こうしてみるとrequest
デカいですね。逆にreact
は意外とコンパクト。
bluebird
とかfs-extra
は無駄にデカいと勝手に思い込んでたけどそうでもない。(個人の感想です)
一番驚いたのはlodash
1.34MBに対してunderscore
が109KBということ。
1340÷109 = 12.293577982です。12倍のサイズですlodash
さん。
ちなみにlodash
は個別にインストールできます。lodash.map
単独だと
です。
そして某CDNサービスでlodash.min.js
を見てみたら72KBでした。
なんだろ。npm経由だとなんでこんなにデカくなるんだろ。
あとがき
webpackとか使うと手軽に依存してしまってプロジェクトが肥大化してしまいますが、ちょっとの工夫で削減できるはず。気をつけよっと😁