6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Node.js_2Advent Calendar 2018

Day 8

インストールサイズで見るnpmパッケージベスト10

Posted at

nodejs界の巨匠、sindresorhus先輩の作品にこんなmoduleがあります。

got - npm

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が張られています。

install size

Package Phobia

Package Phobiaはnpmに上がっているmoduleのサイズを計測してくれるwebサービスです。

先ほどの例に上げたpopular request packageのインストールサイズは4.46MBということになります。

ちなみに先輩のgotはinstall sizeです。

色々調べてみる

npm rankはnpmパッケージのランキングを自動集計して掲載しているgistです。

Top 1000 most depended-upon packagesという被依存数が多いパッケージのランキング上位から抜粋、Package Phobiaのバッジを張ってみました。

2018/12/08現在のランキングです。

  1. install size lodash - 52071
  2. install size request - 30113
  3. install size chalk - 27947
  4. install size commander - 24117
  5. install size express - 21873
  6. install size async - 20646
  7. install size react - 20184
  8. install size debug - 17892
  9. install size underscore - 15641
  10. install size bluebird - 15605
  11. install size moment - 15604
  12. install size fs-extra - 14409

こうしてみるとrequestデカいですね。逆にreactは意外とコンパクト。
bluebirdとかfs-extraは無駄にデカいと勝手に思い込んでたけどそうでもない。(個人の感想です)

一番驚いたのはlodash1.34MBに対してunderscoreが109KBということ。
1340÷109 = 12.293577982です。12倍のサイズですlodashさん。

ちなみにlodashは個別にインストールできます。lodash.map単独だと
install sizeです。

そして某CDNサービスでlodash.min.jsを見てみたら72KBでした。
なんだろ。npm経由だとなんでこんなにデカくなるんだろ。

あとがき

webpackとか使うと手軽に依存してしまってプロジェクトが肥大化してしまいますが、ちょっとの工夫で削減できるはず。気をつけよっと😁

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?