Qu'est-ce que les budgets Angular CLI? Les budgets sont l'une des fonctionnalités les moins connues de l'Angular CLI. C'est une fonctionnalité plutôt petite mais très astucieuse!
À mesure que les applications évoluent en fonctionnalités, elles grandissent également en taille. Les budgets sont une fonctionnalité de l'Angular CLI qui vous permet de définir des seuils de budget dans votre configuration pour garantir que certaines parties de votre application restent dans les limites que vous avez définies — Documentation officielle
Ou en d'autres termes, nous pouvons décrire notre application Angular comme un ensemble de fichiers JavaScript compilés appelés bundles qui sont produits par le processus de build. Les budgets permettent de configurer les tailles attendues de ces bundles. De plus, nous pouvons configurer des seuils pour les conditions où nous voulons recevoir un avertissement ou même arrêter la build avec une erreur si la taille du bundle devient trop incontrôlable!
Comment Définir un Budget? Les budgets Angular sont définis dans le fichier angular.json. Les budgets sont définis par projet, ce qui a du sens car chaque application dans un espace de travail a des besoins différents.
De manière pragmatique, il est logique de définir des budgets pour les builds de production. La build de prod crée des bundles avec la "vraie taille" après l'application de toutes les optimisations comme le shaking et la minimisation de code.
Oups, une erreur de build! La taille maximale du bundle a été dépassée. C'est un excellent signal qui nous indique qu'il y a un problème...
- Nous avons peut-être expérimenté dans notre fonctionnalité et n'avons pas nettoyé correctement
- Nos outils peuvent dysfonctionner et faire une mauvaise auto-importation, ou nous sélectionnons un mauvais élément dans la liste suggérée d'imports
- Nous pourrions importer des éléments depuis des modules paresseux à des endroits inappropriés
- Notre nouvelle fonctionnalité est tout simplement très grande et ne rentre pas dans les budgets existants
Première Approche: Vos fichiers sont-ils gzippés?
En règle générale, un fichier gzippé ne représente que 20% de la taille du fichier original, ce qui peut réduire considérablement le temps de chargement initial de votre application. Pour vérifier si vos fichiers sont gzippés, ouvrez simplement l'onglet réseau de la console développeur. Dans les "En-têtes de réponse", si vous voyez "Content-Encoding: gzip", tout va bien.
Comment gipper? Si vous hébergez votre application Angular sur la plupart des plates-formes cloud ou CDN, vous n'avez pas à vous soucier de ce problème car ils l'ont probablement déjà traité pour vous. Cependant, si vous utilisez votre propre serveur (comme NodeJS + expressJS) pour servir votre application Angular, vérifiez définitivement si les fichiers sont gzippés. Voici un exemple pour gzipper vos ressources statiques dans une application NodeJS + expressJS. Vous pouvez difficilement imaginer que ce middleware "compression" ultra simple réduirait la taille de votre bundle de 2,21 Mo à 495,13 Ko.
const compression = require('compression')
const express = require('express')
const app = express()
app.use(compression())
Deuxième Approche: Analysez votre bundle Angular
Si la taille de votre bundle devient trop importante, vous voudrez peut-être l'analyser car vous avez peut-être utilisé un package tiers trop volumineux ou oublié de supprimer certains packages si vous ne les utilisez plus. Webpack a une fonctionnalité incroyable pour nous donner une idée visuelle de la composition d'un bundle webpack.
C'est super facile d'obtenir ce graphique.
npm install -g webpack-bundle-analyzer
- Dans votre application Angular, exécutez
ng build --stats-json
(n'utilisez pas le drapeau --prod
). En activant --stats-json
, vous obtiendrez un fichier supplémentaire stats.json
- Enfin, exécutez
webpack-bundle-analyzer ./dist/stats.json
et votre navigateur ouvrira la page à localhost:8888. Amusez-vous bien avec ça.
ref 1: Comment les budgets Angular CLI ont-ils sauvé ma journée et comment peuvent-ils sauver la vôtre
ref 2: Optimiser la taille du bundle Angular en 4 étapes
4 votes
Essayez de compresser vos images dans les actifs plutôt que de modifier le fichier angular.json
0 votes
@Ahsan c'est ce que j'ai fait. Toujours le même message. Pas sûr que ce soit lié aux ressources.
0 votes
@Curse Nous mon nouveau réponse et vérifiez les liens