webpackBundleAnalyzerまたはsource-map-explorerを使用してAngularAppBundleのサイズを分析する方法
序章
Webアプリの読み込みパフォーマンスを向上させるための最も重要な要素の1つは、バンドルサイズです。 webpack のような最新のモジュールバンドラーは、デッドコードを排除するためにツリーシェイクを実行します。
ただし、大規模なアプリでは、ツリーシェーキングによって一部の不正なインポートが適切に処理されない場合があり、これらによりバンドルサイズが肥大化します。 または、特定のモジュールが遅延読み込みを適切に行わず、メインバンドルに肥大化を追加する場合があります。
この記事では、アプリのバンドルサイズを分析するための2つのツールwebpack-bundle-analyzer
とsource-map-explorer
を紹介します。
前提条件
この記事をフォローしたい場合は、次のものが必要になります。
- Node.jsはローカルにインストールされます。これは、Node.jsのインストール方法とローカル開発環境の作成に従って実行できます。
- このチュートリアルでは、 @ angle /cliがグローバルにインストールされていることも前提としています
このチュートリアルは、ノードv16.2.0、npm
v7.18.1、@angular/cli
v12.0.5、@angular/core
v12.0.5、webpack-bundle-analyzer
v4.4.2、およびsource-map-explorer
v2.5.2。
webpack-bundle-analyzer
を使用する
webpack-bundle-analyzer は、アプリのビルド時にAngularCLIが自動的に生成できるwebpack統計JSONファイルを分析するツールです。
まず、開発依存関係としてプロジェクトにwebpack-bundle-analyzer
をインストールする必要があります。
- npm install webpack-bundle-analyzer@4.4.2 --save-dev
次に、Angular CLIを使用して本番用のアプリをビルドし、--stats-json
を指定して、webpack統計データがdist
フォルダーにエクスポートされるようにします。
- ng build --configuration=production --stats-json
次に、 npx を使用して、stats.json
ファイルに対してローカルwebpack-bundle-analyzer
を実行します。
- npx webpack-bundle-analyzer dist/*/stats.json
これにより、本番アプリバンドルのインタラクティブな FoamTreeマップを使用して、ポート8888でローカルサーバーが起動します。
サンプルのAngularアプリの結果の例を次に示します。
この視覚化を操作して、表示するバンドル(メイン、ベンダー、チャンクなど)を選択できます。
package.json
では、オプションで、webpack-bundle-analyzer
を呼び出す新しいnpmスクリプトを作成できます。
"scripts": {
"stats": "webpack-bundle-analyzer dist/*/stats.json",
},
これで、本番ビルドの統計にアクセスするときはいつでも、次のコマンドを使用できます。
- npm run stats
このコマンドはwebpack-bundle-analyzer dist/*/stats.json
を実行します。
注:npmスクリプトは最初にローカルのnode_modules
フォルダーを検索するため、ここでnpxを使用する必要はありません。
これでwebpack-bundle-analyzer
の紹介は終わりです。
source-map-explorer
を使用する
source-map-explorer は、バンドルで生成されたソースマップファイルを使用して、バンドラーのサイズと構成を分析し、バンドルの視覚化をレンダリングするツールです。
開始するには、最初にdev依存関係としてプロジェクトにパッケージをインストールします。
- npm install source-map-explorer@2.5.2 --save-dev
次に、本番用にアプリをビルドし、--source-map
フラグを使用して、JavaScriptバンドルごとにソースマップファイルが生成されるようにします。
- ng build --configuration=production --source-map
この後、バンドルからJavaScriptファイルの1つをポイントすることにより、ビジュアライゼーションを生成して起動できます。 たとえば、メインバンドルを見ることができる場合、次のようになります。
- npx source-map-explorer dist/*/main.*.js
サンプルのAngularアプリの結果の例を次に示します。
これでsource-map-explorer
の紹介は終わりです。
結論
この記事では、アプリのバンドルサイズを分析するための2つのツールwebpack-bundle-analyzer
とsource-map-explorer
を紹介しました。
これらのツールは、プロジェクトで使用されているすべてのモジュールを識別し、カスタマイズまたは代替パッケージとの交換によって手動で対処できる特に大きなモジュールがあるかどうかを判断するのに役立ちます。
webpack-bundle-analyzerを使用して、アプリケーションのバンドルサイズを縮小するで学習を続けてください。