Aller au contenu principal

Budgets Angular

Les budgets définissent des limites de taille sur la sortie du build. Angular avertit ou fait échouer le build si un bundle dépasse le seuil, empêchant ainsi la croissance accidentelle du bundle de passer inaperçue.

Configuration (angular.json)

"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "500kb",
"maximumError": "1mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "4kb",
"maximumError": "8kb"
}
]
}
}

Types de budgets

TypeCe qu'il mesure
initialJS + CSS chargés au démarrage (le plus important)
lazyN'importe quel chunk lazy-loaded
allScriptSomme de tous les scripts JS
anyScriptN'importe quel fichier JS
anyN'importe quel fichier de sortie
anyComponentStyleLes styles inline d'un seul composant

Avertissement vs Erreur

NiveauComportement
maximumWarningLe build réussit, un avertissement est affiché
maximumErrorLe build échoue — le pipeline CI est bloqué

Définissez maximumWarning de manière conservative pour détecter la dérive tôt. Utilisez maximumError comme limite absolue.

Analyser le contenu du bundle

Quand un budget est dépassé, trouvez le responsable :

# Étape 1 : générer le fichier de statistiques
ng build --stats-json

# Étape 2 : visualiser
npx webpack-bundle-analyzer dist/my-app/browser/stats.json

Causes fréquentes de bundles trop volumineux :

  • Import d'une bibliothèque entière au lieu de fonctions spécifiques (import * as _ from 'lodash')
  • Une grande dépendance tierce chargée en eager au lieu de lazy
  • Dépendances dupliquées (différentes versions du même package)

Corrections rapides

// ❌ Importe toute la bibliothèque (~70 ko)
import * as _ from 'lodash';

// ✅ Tree-shakeable — seul ce que vous utilisez
import { debounce } from 'lodash-es';
// ❌ Eager — augmente le bundle initial
import { ChartModule } from 'chart.js';

// ✅ Lazy — chargé uniquement quand nécessaire
const { Chart } = await import('chart.js');

Budgets de départ recommandés

Type d'applicationAvertissement initialErreur initial
Landing / marketing150 ko250 ko
Application standard400 ko800 ko
Dashboard riche600 ko1 Mo

Configurez les budgets à la création du projet — les mettre en place rétroactivement sur une grande application est douloureux.