npmパッケージのサイズを表示するにはどうすればよいですか?


129

NPMでパッケージを検索すると、パッケージのサイズ(KBまたはMBなど)が表示されます。NPMはこの情報を表示していないようです。

NPMパッケージがプロジェクトに追加する膨張量を決定するにはどうすればよいですか?


お使いのマシンから空き領域を確保するのに役立つツールを紹介したいので、この会話をハイジャックします。どうやらnode_modules私のマシンでatm 21bgを占めています。npkillあなたがそれを行うのを助けることができます![ここに画像の説明を入力してください ](i.stack.imgur.com/BKbyU.png
Ahmad Alfy

回答:


181

おそらく測定したいのは、パッケージをApp Bundleに追加した場合のパッケージへの影響です。他のほとんどの答えはソースファイルのサイズのみを推定しますが、インラインコメント、長い変数名などのために不正確である可能性があります。

バンドルに入った、パッケージの最小+ gzip圧縮サイズを通知する小さなユーティリティがあります-

https://bundlephobia.com


5
ありがとう!それは本当に素晴らしいユーティリティです!
BaronVonKaneHoffen

3
美しいUI!ありがとう、これはまさに私が探していたものです。しかし、超大型パッケージには永遠にかかります。
protoEvangelion 2017

3
@Blackのバックアップが必要
Shubham Kanodia '12

6
このリンクは:https://cost-of-modules.herokuapp.com今まで導きhttps://bundlephobia.com 、ところで、非常に便利なツール。
Adam Weber

4
これは十分にクールなので、各パッケージのnpmページに追加するだけです
eddiemoya 2018年

69

このモジュールのコストプロジェクトを見てください。これは、パッケージのサイズと子の数をリストするnpmパッケージです。

インストール: npm install -g cost-of-modules

使用法:cost-of-modules作業中のディレクトリで実行します。

ここに画像の説明を入力してください


2
少しやりすぎです。計算の前にすべてのモジュールを再インストールする必要があります。しかし、仕事をします。
pdem

7
このパッケージは使用しないでください
Nth.gol

22

依存関係ツリー内のすべてのtarballを含む、指定されたnpmパッケージのtarballサイズを検査するツールnpm download sizeを作成しました。これにより、依存関係を事前に追加するコスト(インストール時間、ディスク容量、ランタイムリソース、セキュリティ監査など)がわかります。

webpackのダウンロードサイズ

上の画像では、Tarballのサイズはパッケージのtar.gzで、Total sizeはすべてのtarballのサイズです。ツールはかなり基本的ですが、それはそれが言うことを行います。

CLIツールはも可能です。次のようにインストールできます。

npm i -g download-size

次のように使用します。

$ download-size request
request@2.83.0: 1.08 MiB

ソースコードはGithubで入手できます:apicliツール、およびwebクライアント


20

今年初めにPackage Phobiaを作成しました。パッケージサイズ情報をnpmjs.comに取り込み、パッケージの肥大化を追跡することを目的としています。

https://packagephobia.com

img

これは、のnpm installようなサーバー側の依存関係expressまたはのようなdevの依存関係に対して実行した後のディスク容量を測定するように設計されていますjest

このツールと他の同様のツールの詳細については、https//github.com/styfle/packagephobiaの readmeを参照してください。


アップデート2020

「Unpacked Size」(基本的には「Publish Size」)は、「Total Files」とともにnpmjs.com Webサイトで入手できます。ただし、これは再帰的な意味ではなくnpm install、単一のパッケージが多くのパッケージに依存している可能性があるため、はるかに大きくなる可能性があります(したがって、パッケージ恐怖症は依然として関連しています)。

CLIからこの情報を出力する機能の保留中のRFCもあります。


これは素晴らしいことですが、なぜその結果がバンドル恐怖症と著しく異なるのですか?たとえば、lodash.lowerfirstの結果を比較する
Danyal Aytekin '25年

2
@DanyalAytekin彼らは異なるものを測定しているので。短い答え:フロントエンドパッケージを見る場合は、BundlePhobiaを使用します。バックエンドパッケージを表示している場合は、PackagePhobiaを使用します。興味がある場合は、readmeに詳細があります。
スタイフル

16

モジュールバンドルとしてwebpackを使用している場合は、以下を参照してください。

私は間違いなく最初のオプションをお勧めします。インタラクティブなツリーマップでサイズを表示します。これは、バンドルされたファイルでパッケージのサイズを見つけるのに役立ちます。

Webpackバンドルアナライザー

この投稿の他の回答はプロジェクトのサイズを示していますが、ツリーの揺れなど、プロジェクトのすべての部分を使用しているとは限りません。他のアプローチでは、正確なサイズが表示されない場合があります。



4

Visual Studio Codeを使用する場合は、Import Costという拡張機能を使用できます。

この拡張機能は、インポートされたパッケージのサイズをエディターにインラインで表示します。拡張機能は、インポートされたサイズを検出するために、babili-webpack-pluginでwebpackを利用します。


WebStormでも利用できます。
JoeTidee 2018

この拡張機能は、すべてのパッケージで機能するわけではありません。計算中...と表示され、タイムアウト値を非常に大きな値に変更した後でも突然消えます
shreyansh

2

npm-module-statsをチェックアウトできます。モジュールをインストールまたはダウンロードせずに、npmモジュールのサイズとその依存関係を取得するnpmモジュールです。

使用法:

var stats = require("npm-module-stats");

stats.getStats("glob").then((stack) => {

  let dependencies = Object.keys(stack);
  let totalSize = dependencies.reduce((result, key, index) => {
    return result + stack[key].size;
  }, 0);

  console.log('Total Size in Bytes ', totalSize);
  console.log('Total Dependencies ', dependencies.length-1);

}).catch((err) => {
  console.error(err);
});

少し冗長に見えるかもしれませんが、あなたが適切に説明した問題を解決します。


1
第2レベルの担当者はどうですか?
Sharikov Vladislav 2017

2

「迅速かつダーティー」な方法は、curlとwzrd.inを使用して縮小パッケージをすばやくダウンロードし、ファイルサイズをgrepすることです。

curl -i https://wzrd.in/standalone/axios@latest | grep Content-Length

ダウンロードは縮小されていますがgzip圧縮されていませんが、2つ以上のパッケージを比較すると、パッケージの相対的なサイズがわかります。


2
それでは、unpkg.comなどの別のサービスを使用してください。例:curl -i https://unpkg.com/axios@0.16.1/dist/axios.min.js | grep Content-Length
thoragio 2017

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.