Configurations

Configuration du workspace Angular

Le fichier angular.json, situé au niveau racine d'un workspace Angular, fournit des valeurs de configuration par défaut communes au workspace et spécifiques à chaque projet. Elles sont utilisées par les outils de build et de développement fournis par l'Angular CLI. Les chemins indiqués dans la configuration sont relatifs au répertoire racine du workspace.

Structure JSON générale

Au niveau racine de angular.json, quelques propriétés configurent le workspace et une section projects contient les autres options de configuration propres à chaque projet. Vous pouvez remplacer les valeurs par défaut de l'Angular CLI définies au niveau du workspace par des valeurs par défaut définies au niveau du projet. Vous pouvez aussi remplacer les valeurs par défaut définies au niveau du projet depuis la ligne de commande.

Les propriétés suivantes, au niveau racine du fichier, configurent le workspace.

Propriétés Détails
version La version du fichier de configuration.
newProjectRoot Chemin où sont créés les nouveaux projets via des outils comme ng generate application ou ng generate library. Le chemin peut être absolu ou relatif au répertoire du workspace. Vaut projects par défaut
cli Un ensemble d'options qui personnalisent l'Angular CLI. Consultez Options de configuration de l'Angular CLI ci-dessous.
schematics Un ensemble de schematics qui personnalisent les valeurs par défaut des options de la sous-commande ng generate pour ce workspace. Consultez Schematics ci-dessous.
projects Contient une sous-section pour chaque application ou library du workspace, avec les options de configuration propres au projet.

L'application initiale que vous créez avec ng new app-name est listée sous « projects » :

Lorsque vous créez un projet de library avec ng generate library, ce projet de library est aussi ajouté à la section projects.

Utile : La section projects du fichier de configuration ne correspond pas exactement à la structure de fichiers du workspace.

  • L'application initiale créée par ng new se trouve au niveau racine de la structure de fichiers du workspace.
  • Les autres applications et libraries se trouvent par défaut dans le répertoire projects.

Pour plus d'informations, consultez Structure des fichiers du workspace et des projets.

Options de configuration de l'Angular CLI

Les propriétés suivantes forment un ensemble d'options qui personnalisent l'Angular CLI.

Propriété Détails Type de valeur Valeur par défaut
analytics Partage des données d'utilisation anonymes avec l'équipe Angular. Une valeur booléenne indique s'il faut partager les données ou non, tandis qu'une chaîne UUID partage les données avec un identifiant pseudonyme. boolean | string false
cache Contrôle le cache disque persistant utilisé par les builders de l'Angular CLI. Options du cache {}
schematicCollections Liste des collections de schematics à utiliser dans ng generate. string[] []
packageManager Le gestionnaire de packages à utiliser de préférence. npm | pnpm | yarn | bun npm
warnings Contrôle les avertissements de console propres à l'Angular CLI. Options des avertissements {}

Options du cache

Propriété Détails Type de valeur Valeur par défaut
enabled Indique si le cache disque est activé pour les builds. boolean true
environment Indique dans quel environnement le cache disque est activé.

_ ci active la mise en cache uniquement dans les environnements d'intégration continue (CI).
_ local active la mise en cache uniquement en dehors des environnements de CI.
* all active la mise en cache partout.
local | ci | all local
path Le répertoire utilisé pour stocker les résultats du cache. string .angular/cache

Options des avertissements

Propriété Détails Type de valeur Valeur par défaut
versionMismatch Affiche un avertissement lorsque la version globale de l'Angular CLI est plus récente que la version locale. boolean true

Options de configuration des projets

Les propriétés de configuration de premier niveau suivantes sont disponibles pour chaque projet, sous projects['project-name'].

Propriété Détails Type de valeur Valeur par défaut
root Le répertoire racine des fichiers de ce projet, relatif au répertoire du workspace. Vide pour l'application initiale, qui se trouve au niveau racine du workspace. string Aucune (obligatoire)
projectType « application » ou « library ». Une application peut s'exécuter de façon autonome dans un navigateur, contrairement à une library. application | library Aucune (obligatoire)
sourceRoot Le répertoire racine des fichiers source de ce projet. string ''
prefix Une chaîne qu'Angular ajoute au début des selectors lors de la génération de nouveaux composants, directives et pipes avec ng generate. Peut être personnalisée pour identifier une application ou un domaine fonctionnel. string 'app'
i18n Options d'internationalisation du projet. Définit la locale source et les locales supplémentaires à compiler. Consultez Définir les locales dans la configuration de build. Voir Options i18n {}
schematics Un ensemble de schematics qui personnalisent les valeurs par défaut des options de la sous-commande ng generate pour ce projet. Consultez la section Schematics de génération. Voir Schematics {}
architect Valeurs de configuration par défaut des cibles de builders Architect pour ce projet. Voir Configurer les cibles de builders {}

Options i18n

Utilisez l'option de projet i18n pour définir la locale source de l'application et les éventuelles locales supplémentaires à compiler.

Propriété Détails Type de valeur Valeur par défaut
sourceLocale La locale utilisée dans le code source de l'application. Peut être une chaîne d'identifiant de locale ou un objet de configuration. string | objet sourceLocale "en-US"
locales Une table associant des identifiants de locale à des fichiers de traduction ou à des objets de configuration de locale. object {}

Objet sourceLocale

Passez un objet plutôt qu'une chaîne pour personnaliser le répertoire de sortie ou la base HREF de la locale source :

Propriété Détails Type de valeur Valeur par défaut
code L'identifiant de la locale source. string "en-US"
baseHref Remplace le <base href> HTML pour cette locale. Le nom du répertoire de sortie reste le code de la locale. Ne peut pas être utilisé avec subPath. string Code de la locale
subPath Définit à la fois le nom du répertoire de sortie et le <base href> HTML pour cette locale. Ne peut pas être utilisé avec baseHref. string Code de la locale

Objet locale

Chaque entrée de locales peut être une chaîne de chemin, un tableau de chemins ou un objet :

Propriété Détails Type de valeur Valeur par défaut
translation Chemin ou chemins du ou des fichiers de traduction de cette locale. string | string[]
baseHref Remplace le <base href> HTML pour cette locale. Le nom du répertoire de sortie reste l'identifiant de la locale. Ne peut pas être utilisé avec subPath. string Code de la locale
subPath Définit à la fois le nom du répertoire de sortie et le <base href> HTML pour cette locale. Ne peut pas être utilisé avec baseHref. string Code de la locale

Utile : Utilisez subPath plutôt que baseHref lorsque vous devez aussi renommer le répertoire de sortie, par exemple pour produire la sortie dans de-DE/ au lieu de de/.

Schematics

Les schematics Angular sont des instructions qui modifient un projet en ajoutant de nouveaux fichiers ou en modifiant des fichiers existants. Vous pouvez les configurer en associant le nom du schematic à un ensemble d'options par défaut.

Le « nom » d'un schematic suit le format <schematic-package>:<schematic-name>. Les schematics des sous-commandes ng generate par défaut de l'Angular CLI sont regroupés dans le package @schematics/angular. Par exemple, le schematic qui génère un composant avec ng generate component est @schematics/angular:component.

Les champs indiqués dans le schéma du schematic correspondent aux valeurs d'arguments de ligne de commande autorisées et aux valeurs par défaut des options de la sous-commande de l'Angular CLI. Vous pouvez modifier le fichier de schéma de votre workspace pour définir une autre valeur par défaut pour une option de sous-commande. Par exemple, pour désactiver standalone par défaut dans ng generate component :

{
  "projects": {
    "my-app": {
      "schematics": {
        "@schematics/angular:component": {
          "standalone": false
        }
      }
    }
  }
}

Configurer les builders de la CLI

Architect est l'outil qu'utilise l'Angular CLI pour effectuer des tâches complexes, comme la compilation et l'exécution des tests. Architect est une enveloppe qui exécute un builder donné pour effectuer une tâche précise, selon la configuration d'une cible. Vous pouvez définir et configurer de nouveaux builders et de nouvelles cibles pour étendre l'Angular CLI. Consultez Builders de l'Angular CLI.

Builders et cibles Architect par défaut

Angular définit des builders par défaut à utiliser avec des commandes précises, ou avec la commande générale ng run. Les schémas JSON qui définissent les options et les valeurs par défaut de chacun de ces builders sont regroupés dans le package @angular/build. Ces schémas configurent les options des builders suivants.

Configurer les cibles de builders

La section architect de angular.json contient un ensemble de cibles Architect. Beaucoup de ces cibles correspondent aux commandes de l'Angular CLI qui les exécutent. D'autres cibles peuvent être exécutées avec la commande ng run, et vous pouvez définir vos propres cibles.

Chaque objet cible indique le builder de cette cible, c'est-à-dire le package npm de l'outil qu'exécute Architect. Chaque cible possède aussi une section options qui configure les options par défaut de la cible, et une section configurations qui nomme et définit des configurations alternatives pour la cible. Consultez l'exemple de Cible de build ci-dessous.

Propriété Détails
build Configure les valeurs par défaut des options de la commande ng build. Consultez la section Cible de build pour plus d'informations.
serve Remplace les valeurs par défaut du build et fournit des valeurs par défaut supplémentaires pour la commande ng serve. En plus des options disponibles pour la commande ng build, elle ajoute des options liées au service de l'application.
e2e Remplace les valeurs par défaut du build pour compiler des applications de test de bout en bout avec la commande ng e2e.
test Remplace les valeurs par défaut du build pour les builds de test et fournit des valeurs par défaut supplémentaires d'exécution des tests pour la commande ng test.
lint Configure les valeurs par défaut des options de la commande ng lint, qui effectue une analyse statique du code des fichiers source du projet.
extract-i18n Configure les valeurs par défaut des options de la commande ng extract-i18n, qui extrait les chaînes de messages localisées du code source et produit des fichiers de traduction pour l'internationalisation.

Utile : Toutes les options du fichier de configuration doivent utiliser le camelCase, et non le dash-case utilisé en ligne de commande.

Cible de build

Chaque cible sous architect possède les propriétés suivantes :

Propriété Détails
builder Le builder CLI utilisé pour créer cette cible, sous la forme <package-name>:<builder-name>.
options Les options par défaut de la cible de build.
configurations Configurations alternatives pour exécuter la cible. Chaque configuration définit les options par défaut pour l'environnement visé, en remplaçant la valeur associée sous options. Consultez Configurations de build alternatives ci-dessous.

Par exemple, pour configurer un build avec les optimisations désactivées :

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular/build:application",
          "options": {
            "optimization": false
          }
        }
      }
    }
  }
}

Configurations de build alternatives

L'Angular CLI fournit deux configurations de build : production et development. Par défaut, la commande ng build utilise la configuration production, qui applique plusieurs optimisations de build, notamment :

  • Le regroupement des fichiers en bundles
  • La réduction des espaces superflus
  • La suppression des commentaires et du code mort
  • La minification du code avec des noms courts et obscurcis

Vous pouvez définir et nommer d'autres configurations alternatives (comme staging, par exemple) adaptées à votre processus de développement. Vous pouvez sélectionner une configuration alternative en passant son nom à l'option de ligne de commande --configuration.

Par exemple, pour configurer un build dans lequel l'optimisation n'est activée que pour les builds de production (ng build --configuration production) :

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular/build:application",
          "options": {
            "optimization": false
          },
          "configurations": {
            "production": {
              "optimization": true
            }
          }
        }
      }
    }
  }
}

Vous pouvez aussi passer plusieurs noms de configuration sous forme de liste séparée par des virgules. Par exemple, pour appliquer à la fois les configurations de build staging et french, utilisez la commande ng build --configuration staging,french. Dans ce cas, la commande analyse les configurations nommées de gauche à droite. Si plusieurs configurations modifient le même paramètre, la dernière valeur définie l'emporte. Dans cet exemple, si les configurations staging et french définissent toutes deux le chemin de sortie, c'est la valeur de french qui est utilisée.

Options supplémentaires de build et de test

Les options configurables d'un build par défaut ou ciblé correspondent généralement aux options disponibles pour les commandes ng build et ng test. Pour le détail de ces options et de leurs valeurs possibles, consultez la référence de l'Angular CLI.

Propriétés d'options Détails
assets Un objet contenant les chemins des ressources statiques à servir avec l'application. Les chemins par défaut pointent vers le répertoire public du projet. Pour en savoir plus, consultez la section Configuration des assets.
styles Un tableau de fichiers CSS à ajouter au contexte global du projet. L'Angular CLI prend en charge les imports CSS et tous les principaux préprocesseurs CSS. Pour en savoir plus, consultez la section Configuration des styles et des scripts.
stylePreprocessorOptions Un objet contenant des paires option-valeur à passer aux préprocesseurs de styles. Pour en savoir plus, consultez la section Configuration des styles et des scripts.
inlineStyleLanguage Le langage de feuille de style à utiliser pour les styles inline des composants de l'application. Accepte css, less, sass ou scss, et vaut css par défaut.
scripts Un objet contenant les fichiers JavaScript à ajouter à l'application. Les scripts sont chargés exactement comme si vous les aviez ajoutés dans une balise <script> à l'intérieur de index.html. Pour en savoir plus, consultez la section Configuration des styles et des scripts.
budgets Type de budget de taille et seuils par défaut pour tout ou partie de votre application. Vous pouvez configurer le builder pour qu'il signale un avertissement ou une erreur lorsque la sortie atteint ou dépasse une taille seuil. Consultez Configurer les budgets de taille.
fileReplacements Un objet contenant des fichiers et leurs remplacements à la compilation. Pour en savoir plus, consultez Configurer des remplacements de fichiers propres à une cible.
index Un document HTML de base qui charge l'application. Pour en savoir plus, consultez Configuration de l'index.
security Un objet contenant la clé autoCsp, qui peut valoir true ou false

Options supplémentaires de serve

Le serveur de développement dispose de son propre ensemble d'options, qui correspondent généralement aux options disponibles pour la commande ng serve.

Propriétés d'options Détails
allowedHosts Un tableau des hôtes auxquels le serveur de développement répond. Cette option définit l'option Vite du même nom. Pour plus de détails, consultez la documentation de Vite

Valeurs de configuration complexes

Les options assets, index, outputPath, styles et scripts acceptent soit de simples chaînes de chemin, soit des objets dotés de champs spécifiques. Les options sourceMap et optimization peuvent recevoir une simple valeur booléenne. Elles peuvent aussi recevoir une valeur complexe via le fichier de configuration.

Les sections suivantes détaillent l'utilisation de ces valeurs complexes dans chaque cas.

Configuration des assets

Chaque configuration de cible build peut inclure un tableau assets qui liste les fichiers ou dossiers à copier tels quels lors du build de votre projet. Par défaut, le contenu du répertoire public/ est copié.

Pour exclure une ressource, vous pouvez la retirer de la configuration des assets.

Vous pouvez configurer plus finement les ressources à copier en les spécifiant sous forme d'objets plutôt que de simples chemins relatifs à la racine du workspace. Un objet de spécification de ressource peut avoir les champs suivants.

Champs Détails
glob Un node-glob utilisant input comme répertoire de base.
input Un chemin relatif à la racine du workspace.
output Un chemin relatif à outDir. Pour des raisons de sécurité, l'Angular CLI n'écrit jamais de fichiers en dehors du chemin de sortie du projet.
ignore Une liste de globs à exclure.
followSymlinks Permet aux motifs glob de suivre les répertoires de liens symboliques, afin de parcourir les sous-répertoires du lien symbolique. Vaut false par défaut.

Par exemple, les objets de ressources suivants copient le contenu de src/assets/ dans /assets/ et src/favicon.ico à la racine de la sortie.

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular/build:application",
          "options": {
            "assets": [
              {
                "glob": "**/*",
                "input": "src/assets/",
                "output": "/assets/"
              },
              {
                "glob": "favicon.ico",
                "input": "src/",
                "output": "/"
              }
            ]
          }
        }
      }
    }
  }
}

L'exemple suivant utilise le champ ignore pour empêcher certains fichiers du répertoire des assets d'être copiés dans le build :

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular/build:application",
          "options": {
            "assets": [
              {
                "glob": "**/*",
                "input": "src/assets/",
                "ignore": ["**/*.svg"],
                "output": "/assets/"
              }
            ]
          }
        }
      }
    }
  }
}

Configuration des styles et des scripts

Une entrée de tableau des options styles et scripts peut être une simple chaîne de chemin ou un objet qui pointe vers un fichier de point d'entrée supplémentaire. Le builder associé charge ce fichier et ses dépendances dans un bundle distinct pendant le build. Avec un objet de configuration, vous pouvez nommer le bundle du point d'entrée à l'aide d'un champ bundleName.

Le bundle est injecté par défaut, mais vous pouvez définir inject à false pour exclure le bundle de l'injection. Par exemple, les objets suivants créent et nomment un bundle qui contient des styles et des scripts, et l'excluent de l'injection :

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular/build:application",
          "options": {
            "styles": [
              {
                "input": "src/external-module/styles.scss",
                "inject": false,
                "bundleName": "external-module"
              }
            ],
            "scripts": [
              {
                "input": "src/external-module/main.js",
                "inject": false,
                "bundleName": "external-module"
              }
            ]
          }
        }
      }
    }
  }
}

Options des préprocesseurs de styles

Avec Sass, vous pouvez utiliser la fonctionnalité includePaths pour les styles des composants comme pour les styles globaux. Elle vous permet d'ajouter des chemins de base supplémentaires dans lesquels les imports sont recherchés.

Pour ajouter des chemins, utilisez l'option stylePreprocessorOptions :

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular/build:application",
          "options": {
            "stylePreprocessorOptions": {
              "includePaths": ["src/style-paths"]
            }
          }
        }
      }
    }
  }
}

Les fichiers de ce répertoire, comme src/style-paths/_variables.scss, peuvent être importés depuis n'importe quel endroit de votre projet sans chemin relatif :

src/app/app.scss

// A relative path works
@import '../style-paths/variables';

// But now this works as well
@import 'variables';

Utile : Vous devez aussi ajouter les styles ou scripts au builder test si vous en avez besoin pour les tests unitaires. Consultez aussi Utiliser des libraries globales à l'exécution dans votre application.

Configuration de l'optimisation

L'option optimization peut être soit un booléen, soit un objet pour une configuration plus fine. Cette option active diverses optimisations de la sortie du build, notamment :

  • La minification des scripts et des styles
  • Le tree-shaking
  • L'élimination du code mort
  • L'inlining du CSS critique
  • L'inlining des polices

Plusieurs options permettent d'affiner l'optimisation d'une application.

Options Détails Type de valeur Valeur par défaut
scripts Active l'optimisation des scripts produits. boolean true
styles Active l'optimisation des styles produits. boolean | Options d'optimisation des styles true
fonts Active l'optimisation des polices. Nécessite un accès à internet. boolean | Options d'optimisation des polices true

Options d'optimisation des styles

Options Détails Type de valeur Valeur par défaut
minify Minifie les définitions CSS en supprimant les espaces et commentaires superflus, en fusionnant les identifiants et en réduisant les valeurs. boolean true
inlineCritical Extrait et intègre inline les définitions CSS critiques pour améliorer le First Contentful Paint. boolean true
removeSpecialComments Supprime les commentaires du CSS global qui contiennent @license ou @preserve, ou qui commencent par //! ou /*!. boolean true

Options d'optimisation des polices

Options Détails Type de valeur Valeur par défaut
inline Réduit les requêtes bloquant le rendu en intégrant inline les définitions CSS externes de Google Fonts et d'Adobe Fonts dans le fichier HTML index de l'application. Nécessite un accès à internet. boolean true

Vous pouvez fournir une valeur comme la suivante pour appliquer l'optimisation à l'un ou à l'autre :

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular/build:application",
          "options": {
            "optimization": {
              "scripts": true,
              "styles": {
                "minify": true,
                "inlineCritical": true
              },
              "fonts": true
            }
          }
        }
      }
    }
  }
}

Configuration des source maps

L'option de builder sourceMap peut être soit un booléen, soit un objet pour une configuration plus fine des source maps d'une application.

Options Détails Type de valeur Valeur par défaut
scripts Produit les source maps de tous les scripts. boolean true
styles Produit les source maps de tous les styles. boolean true
vendor Résout les source maps des packages tiers. boolean false
hidden Omet le lien vers les source maps dans le JavaScript produit. boolean false
sourcesContent Inclut le contenu source d'origine des fichiers dans les source maps. boolean true

L'exemple ci-dessous montre comment basculer une ou plusieurs valeurs pour configurer les source maps produites :

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular/build:application",
          "options": {
            "sourceMap": {
              "scripts": true,
              "styles": false,
              "hidden": true,
              "vendor": true
            }
          }
        }
      }
    }
  }
}

Utile : Avec des source maps masquées, les source maps ne sont pas référencées dans le bundle. Elles sont utiles si vous voulez uniquement que les source maps servent à faire correspondre les stack traces dans les outils de signalement d'erreurs, sans qu'elles apparaissent dans les outils de développement du navigateur. Notez que même si hidden empêche de lier la source map dans le bundle produit, votre processus de déploiement doit veiller à ne pas servir les source maps générées en production, faute de quoi les informations fuitent quand même.

Source maps sans contenu source

Vous pouvez générer des source maps sans le champ sourcesContent, qui contient le code source d'origine. Cela vous permet de déployer des source maps en production pour un meilleur signalement des erreurs avec les noms source d'origine, tout en protégeant votre code source de toute exposition.

Pour exclure le contenu source des source maps, définissez l'option sourcesContent à false :

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "builder": "@angular/build:application",
          "options": {
            "sourceMap": {
              "scripts": true,
              "styles": true,
              "sourcesContent": false
            }
          }
        }
      }
    }
  }
}

Configuration de l'index

Configure la génération de l'index HTML de l'application.

L'option index peut être soit une chaîne, soit un objet pour une configuration plus fine.

Lorsque la valeur est fournie sous forme de chaîne, le nom de fichier du chemin indiqué est utilisé pour le fichier généré, qui est créé à la racine du chemin de sortie configuré pour l'application.

Options de l'index

Options Détails Type de valeur Valeur par défaut
input Le chemin d'un fichier à utiliser pour l'index HTML généré de l'application. string Aucune (obligatoire)
output Le chemin de sortie du fichier HTML index généré de l'application. Le chemin complet fourni est utilisé et considéré comme relatif au chemin de sortie configuré pour l'application. string index.html

Configuration du chemin de sortie

L'option outputPath peut être soit une chaîne, utilisée comme valeur de base, soit un objet pour une configuration plus fine.

Plusieurs options permettent d'affiner la structure de sortie d'une application.

Options Détails Type de valeur Valeur par défaut
base Indique le chemin de sortie relatif à la racine du workspace. string
browser Le nom du répertoire de sortie du build navigateur, situé dans le chemin de sortie de base. Il peut être servi aux utilisateurs en toute sécurité. string browser
server Le nom du répertoire de sortie du build serveur, situé dans le chemin de sortie de base. string server
media Le nom du répertoire de sortie des fichiers média, situé dans le répertoire de sortie navigateur. Ces fichiers média sont couramment appelés ressources dans les fichiers CSS. string media