Explorez le contenu de votre bundle Angular avec esbuild Bundle Size Analyzer

Vous avez probablement déjà rencontré cet avertissement lors de la compilation de votre application Angular :

▲ [WARNING] bundle initial exceeded maximum budget.
Budget 500.00 kB was not met by 255.15 kB with a total of 755.15 kB.

Cet avertissement indique que le bundle initial de votre application dépasse la taille recommandée.

En analysant plus en détail la sortie de la commande de build, vous constatez qu’il y a un ou plusieurs chunks (comme chunk-Z7S6WM67.js, qui fait 372.72 kB dans notre exemple) avec une taille conséquente. Cependant, la sortie ne vous dit pas ce que contiennent ces chunks.

Initial chunk files | Names | Raw size | Estimated transfer size
chunk-Z7S6WM67.js | - | 372.72 kB | 68.74 kB
chunk-ORYPD7AH.js | - | 171.08 kB | 50.03 kB
styles-SJAOVDRH.css | styles | 116.50 kB | 11.68 kB
main-B55UHCZT.js | main | 60.79 kB | 13.80 kB
polyfills-S3BTP7ME.js | polyfills | 33.24 kB | 10.76 kB
chunk-TMC7WMLO.js | - | 830 bytes | 830 bytes
| Initial total | 755.15 kB | 155.83 kB

Pour mieux comprendre ce que contiennent ces chunks, vous pouvez visualiser leur contenu à l’aide de l’outil en ligne esbuild Bundle Size Analyzer. Voici les étapes à suivre pour le faire.

Étape 1 : Générer un metafile

L’Angular CLI se base sur esbuild pour compiler votre application. Vous pouvez lui instruire de générer un fichier de métadonnées en lui passant le flag --stats-json.

ng build my-app --stats-json

Grâce à ce flag, un fichier stats.json situé dans le dossier contenant vos artifacts de build (typiquement dist/my-app pour une application qui s’appelle my-app) sera généré et pourra être analysé par l’outil en ligne esbuild Bundle Size Analyzer.

Étape 2 : Ouvrir le metafile avec

Aller sur https://esbuild.github.io/analyze/, puis appuyer sur le bouton “Import your metafile…“.

import metafile

Ensuite, sélectionner le fichier stats.json le metafile généré dans l’étape 1.

Étape 3 : analyser le contenu des chunks

Vous pouvez maintenant visualiser tous les paquets contenus dans votre bundle sous forme de Treemap :

Treemap

De Flame chart :

Flamechart

Ou de Sunburst :

Sunburst

Vous aimez ce blog ?
Suivez-moi sur Twitter pour plus de contenu !

Rejoignez la newsletter pour du contenu de grande qualité dans votre boite mail

Pas de spam. Que du contenu de qualité.