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は無駄にデカいと勝手に思い込んでたけどそうでもない。(個人の感想です)
一番驚いたのはlodash1.34MBに対してunderscoreが109KBということ。
1340÷109 = 12.293577982です。12倍のサイズですlodashさん。
ちなみにlodashは個別にインストールできます。lodash.map単独だと
です。
そして某CDNサービスでlodash.min.jsを見てみたら72KBでした。
なんだろ。npm経由だとなんでこんなにデカくなるんだろ。
あとがき
webpackとか使うと手軽に依存してしまってプロジェクトが肥大化してしまいますが、ちょっとの工夫で削減できるはず。気をつけよっと😁