Avez-vous une question? (216) 97 656 803 hajjriadh@gmail.com
Angular

Présentation de la CLI Angular et ses commandes essentielles

Un cours complet pour maîtriser Présentation de la CLI Angular et ses commandes essentielles.

0 chapitres 0 QCM Accès gratuit
Dans cet article
  1. Objectifs

    • Savoir ce qu'est Angular CLI et pourquoi on l'utilise
    • Installer Angular CLI et vérifier son installation
    • Comprendre la structure d'une commande ng: commande, schéma, nom et options
    • Créer un projet avec ng new et le lancer avec ng serve
    • Générer des composants, services, interfaces et autres éléments avec ng generate
    • Compiler l'application pour la publication avec ng build
    • Connaître les commandes ng add, ng update, ng test et ng version
  2. Présentation

    • Angular CLI (Command Line Interface) est l'outil officiel en ligne de commande d'Angular. Il s'utilise dans un terminal avec la commande ng.
    • C'est un programme Node.js, installé avec npm (voir la leçon Présentation de l'environnement de développement Node.js).
    • Angular CLI accompagne le projet du début à la fin :
      • Créer un projet complet, déjà configuré, en une seule commande.
      • Générer les fichiers d'un composant, d'un service, d'un pipe… en respectant les conventions d'Angular.
      • Lancer un serveur de développement qui recompile et recharge la page à chaque sauvegarde.
      • Tester le code avec les tests unitaires.
      • Compiler une version optimisée de l'application, prête à être publiée.
      • Ajouter des bibliothèques et mettre à jour Angular automatiquement.
    • Pourquoi l'utiliser ? Sans la CLI, il faudrait configurer à la main le compilateur TypeScript, l'outil de bundle, le serveur de développement et les tests. La CLI cache cette complexité et garantit que tous les projets Angular ont la même organisation : un développeur qui rejoint un projet s'y retrouve tout de suite.

Cycle de vie d'un projet avec Angular CLI

  1. Installer et vérifier Angular CLI

    • Angular CLI s'installe globalement avec npm, pour que la commande ng soit disponible dans tous les dossiers :
npm install -g @angular/cli
  • Vérifiez l'installation avec ng version (ou sa forme courte ng v). La commande affiche les versions d'Angular CLI, de Node.js, de npm et du système d'exploitation :
ng version
  • Pour mettre à jour la CLI installée globalement, relancez simplement npm install -g @angular/cli.
  • Sans installation globale, on peut aussi utiliser la CLI à la demande avec npx:
npx @angular/cli new mon-projet
  • Anatomie d'une commande

    • Toutes les commandes de la CLI suivent la même structure : ng <commande> [schéma] [nom] [options].
    • La plupart des commandes et des options ont une forme courte (alias) : generate devient g, component devient c, --dry-run devient -d.

    Anatomie d'une commande Angular CLI

    • Pour obtenir de l'aide, ajoutez --help à n'importe quelle commande :
    ng help                    # liste de toutes les commandes
    ng new --help              # options de ng new
    ng generate --help         # liste des schémas disponibles
    ng generate component --help
    1. ng new : créer un projet

      • ng new crée un dossier portant le nom du projet, y génère tous les fichiers, installe les dépendances avec npm et initialise un dépôt Git avec un premier commit.
      • La commande pose quelques questions : le format des styles (CSS, SCSS…) et l'activation du rendu côté serveur (SSR). Pour débuter, choisissez CSS et répondez No au SSR.
    ng new ma-boutique

    Création d'un projet avec ng new

    • On peut répondre aux questions directement avec des options, ce qui est pratique en séance :
    ng new ma-boutique --style=css --ssr=false
    • Les options les plus utiles de ng new:
    Option Rôle
    --style=css Format des feuilles de style : css, scss, sass ou less
    --ssr=false Désactive le rendu côté serveur (SSR)
    --prefix=bt Préfixe des sélecteurs de composants (par défaut app, ex : app-liste devient bt-liste)
    --skip-tests Ne génère pas les fichiers de test .spec.ts
    --skip-install Crée les fichiers sans lancer npm install (utile hors connexion)
    --skip-git N'initialise pas de dépôt Git
    --directory=dossier Crée le projet dans un dossier au nom différent de celui du projet
    --dry-run (-d) Affiche les fichiers qui seraient créés, sans rien créer
    • Attention : lancez ng new depuis le dossier qui doit contenir le projet (ex : C:\projets), jamais depuis l'intérieur d'un autre projet Angular. Toutes les autres commandes, au contraire, se lancent à la racine du projet, là où se trouve angular.json.
  • Activité 1 : créer le projet et le publier sur GitHub

    • Dans le dossier C:\projets (ou celui de votre choix), créez le projet ma-boutique avec le style CSS et sans SSR.
    • Testez d'abord la commande avec --dry-run: combien de fichiers seraient créés ? Le dossier existe-t-il après la commande ?
    • Lancez la vraie commande, puis entrez dans le dossier avec cd ma-boutique.
    • Vérifiez que Git est déjà initialisé avec git log --oneline: quel est le message du premier commit ?
    • Créez un dépôt vide ma-boutique sur GitHub et envoyez-y le projet :
    git branch -M main
    git remote add origin https://github.com/VOTRE-COMPTE/ma-boutique.git
    git push -u origin main
    1. ng serve : lancer le serveur de développement

      • ng serve compile l'application en mémoire et la sert sur http://localhost:4200.
      • Le serveur surveille les fichiers: à chaque sauvegarde, il recompile uniquement ce qui a changé et recharge la page du navigateur.
      • Le terminal reste occupé tant que le serveur tourne : ouvrez un second terminal pour taper d'autres commandes. Arrêtez le serveur avec Ctrl + C.
    ng serve           # lance le serveur
    ng serve -o        # lance le serveur et ouvre le navigateur (--open)
    ng serve --port 4300
    npm start          # équivalent : le script "start" de package.json exécute ng serve

    Lancement du serveur de développement avec ng serve

    • Les options utiles de ng serve:
    Option Rôle
    --open (-o) Ouvre automatiquement le navigateur
    --port 4300 Change le port (utile si le port 4200 est déjà occupé par un autre projet)
    --host 0.0.0.0 Rend l'application accessible depuis un autre appareil du réseau local (ex : un téléphone, avec l'adresse IP du poste)
    --configuration production Sert l'application avec la configuration de production
    1. Activité 2 : observer le rechargement automatique

      • Lancez ng serve -o dans le projet ma-boutique.
      • Ouvrez src/app/app.html, remplacez tout son contenu par <h1>Ma boutique</h1> et enregistrez : observez le terminal et le navigateur.
      • Faites volontairement une erreur dans src/app/app.ts (supprimez une accolade) et enregistrez : où l'erreur s'affiche-t-elle ? Corrigez-la.
      • Arrêtez le serveur avec Ctrl + C, puis relancez-le sur le port 4300.
      • Faites un commit : git commit -am "Page d'accueil Ma boutique".
    2. ng generate : générer des éléments

      • ng generate (forme courte ng g) crée les fichiers d'un élément Angular à partir d'un schéma (schematic), un modèle qui respecte les conventions officielles.
      • Le chemin indiqué est relatif au dossier src/app/. Les dossiers manquants sont créés automatiquement.
    Schéma Forme courte Exemple Ce qui est généré
    component c ng g c produits/liste Un composant : .ts, .html, .css et .spec.ts dans son propre dossier
    service s ng g s services/produit Une classe @Injectable et son test
    interface i ng g i models/produit Une interface TypeScript (ex : Produit)
    class cl ng g cl models/panier Une classe TypeScript
    enum e ng g e models/categorie Une énumération TypeScript
    directive d ng g d shared/surligner Une directive personnalisée
    pipe p ng g p shared/prix-tnd Un pipe personnalisé
    guard g ng g g core/auth Un guard de route (la CLI demande quel type : CanActivate…)
    interceptor — ng g interceptor core/jeton Un intercepteur HTTP
    environments — ng g environments Les fichiers environment.ts pour le développement et la production

    Génération d'un composant et d'un service avec ng generate

    • Exemple : le composant généré par ng g c produits/liste (fichier src/app/produits/liste/liste.ts)
    import { Component } from '@angular/core';
    
    @Component({
      selector: 'app-liste',
      imports: [],
      templateUrl: './liste.html',
      styleUrl: './liste.css'
    })
    export class Liste {
    
    }
    • Le sélecteur est formé du préfixe du projet (app) et du nom (liste). Pour l'afficher, ajoutez Liste dans les imports du composant parent, puis la balise <app-liste /> dans son template.
    • Remarque : dans les versions d'Angular antérieures à la 20, les fichiers générés portent un suffixe (liste.component.ts, produit.service.ts) et les classes aussi (ListeComponent, ProduitService). Le principe est identique.
    • Les options les plus utiles de ng generate:
    Option Rôle
    --dry-run (-d) Simule la génération : affiche les fichiers sans les créer. À utiliser en cas de doute.
    --skip-tests Ne crée pas le fichier .spec.ts
    --flat Crée les fichiers directement dans le dossier indiqué, sans sous-dossier
    --inline-template (-t) Écrit le HTML dans le fichier .ts (propriété template) au lieu d'un fichier .html
    --inline-style (-s) Écrit le CSS dans le fichier .ts (propriété styles) au lieu d'un fichier .css
    # un petit composant tout-en-un, sans test
    ng g c shared/badge -t -s --skip-tests
    import { Component } from '@angular/core';
    
    @Component({
      selector: 'app-badge',
      imports: [],
      template: `
        <p>
          badge works!
        </p>
      `,
      styles: ``
    })
    export class Badge {
    
    }
    1. Activité 3 : générer l'ossature de « Ma boutique »

      • Dans un second terminal (gardez ng serve actif dans le premier), générez avec la CLI :
        • l'interface models/produit;
        • le service services/produit;
        • les composants produits/liste et produits/detail;
        • le composant layout/entete en un seul fichier (template et styles intégrés) et sans test.
      • Avant chaque commande, testez-la avec --dry-run et vérifiez l'emplacement des fichiers.
      • Complétez l'interface Produit avec les propriétés id (number), nom (string), prix (number) et disponible (boolean).
      • Affichez <app-entete /> et <app-liste /> dans app.html (pensez aux imports du composant racine).
      • Faites un commit après chaque génération, puis poussez sur GitHub : git push.
    2. ng build : compiler pour la publication

      • ng build compile l'application en mode production (configuration par défaut) : le code TypeScript est transformé en JavaScript, minifié, regroupé en quelques fichiers et débarrassé du code inutilisé.
      • Le résultat est placé dans le dossier dist/:
    ng build
    dist/
    └── ma-boutique/
        └── browser/                  # contenu à publier sur le serveur web
            ├── index.html
            ├── main-XXXXXXXX.js      # le code de l'application (nom unique à chaque build)
            ├── styles-XXXXXXXX.css
            └── favicon.ico
    • Les noms de fichiers contiennent une empreinte (hash) qui change à chaque modification : le navigateur ne garde jamais une ancienne version en cache.
    • Le contenu de browser/ se publie sur Apache, Nginx ou tout hébergement web : Node.js n'est pas nécessaire sur le serveur.
    • Options utiles :
    Commande Rôle
    ng build Compilation de production, optimisée
    ng build --configuration development Compilation non optimisée, plus rapide et plus lisible, pour déboguer
    ng build --base-href /ma-boutique/ Prépare une application publiée dans un sous-dossier du site (ex : https://monsite.tn/ma-boutique/)
    ng build --watch Recompile automatiquement à chaque modification
    1. Les autres commandes essentielles

      • ng test: exécute les tests unitaires (fichiers .spec.ts) et affiche les résultats. L'outil de test utilisé dépend de la version d'Angular et de la configuration du projet.
      • ng add: installe une bibliothèque et la configure automatiquement dans le projet (dépendances, styles, configuration). Exemple :
    ng add @angular/material
    • Différence avec npm install : npm install ne fait que télécharger le paquet. ng add le télécharge puis exécute son script d'installation, qui modifie les fichiers du projet. Il ne fonctionne qu'avec les bibliothèques prévues pour Angular. Pour Bootstrap, on utilise npm install bootstrap puis on déclare le CSS dans angular.json (voir Intégrer Bootstrap avec Angular).
    • ng update: sans argument, liste les paquets Angular qui peuvent être mis à jour. Avec des arguments, met à jour Angular et migre automatiquement le code si la nouvelle version l'exige :
    ng update                              # liste les mises à jour disponibles
    ng update @angular/core @angular/cli   # met à jour Angular et la CLI du projet
    • Conseil : faites un commit avant chaque ng update. En cas de problème, vous pourrez revenir en arrière avec Git.
    • ng version (ng v) : affiche les versions installées. C'est la première information à donner quand on demande de l'aide.
    • ng lint: analyse la qualité du code. Il faut d'abord ajouter un outil d'analyse avec ng add angular-eslint.
  • Où la CLI lit-elle sa configuration ?

    • La CLI lit le fichier angular.json à la racine du projet. Il définit, pour chaque commande, l'outil utilisé (builder) et ses options : fichier d'entrée, styles globaux, dossier de sortie, configurations production et development.
    • C'est pour cela que ng serve ou ng build échouent hors du dossier du projet : la CLI ne trouve pas angular.json.
    • Le fichier package.json contient des raccourcis vers ces commandes :
    "scripts": {
      "ng": "ng",
      "start": "ng serve",
      "build": "ng build",
      "watch": "ng build --watch --configuration development",
      "test": "ng test"
    }
    • npm start et npm run build utilisent la version de la CLI installée dans le projet (node_modules), ce qui évite les écarts de version avec la CLI globale.
  • Erreurs fréquentes

  • Message ou symptôme Cause Solution
    « 'ng' n'est pas reconnu en tant que commande interne » La CLI n'est pas installée globalement, ou le terminal a été ouvert avant l'installation npm install -g @angular/cli, puis fermer et rouvrir le terminal
    « l'exécution de scripts est désactivée sur ce système » Politique d'exécution de PowerShell sous Windows Voir Erreur exécution de script, ou utiliser l'Invite de commandes
    « This command is not available when running the Angular CLI outside a workspace » La commande est lancée hors du dossier du projet cd ma-boutique pour se placer là où se trouve angular.json
    « Port 4200 is already in use » Un autre ng serve tourne déjà Arrêter l'autre serveur (Ctrl + C) ou lancer ng serve --port 4300
    « The Angular CLI requires a minimum Node.js version » Version de Node.js incompatible avec cette version d'Angular Installer une version LTS compatible (voir angular.dev/reference/versions)
    « Cannot find module… » après un clonage Le dossier node_modules n'existe pas (il n'est pas sur GitHub) npm install à la racine du projet
    1. Aide-mémoire

    Commande Forme courte Rôle
    ng new nom ng n nom Créer un projet
    ng serve ng s Lancer le serveur de développement
    ng generate schéma nom ng g … Générer un élément
    ng build ng b Compiler pour la publication
    ng test ng t Lancer les tests unitaires
    ng add paquet — Ajouter et configurer une bibliothèque
    ng update — Mettre à jour Angular
    ng version ng v Afficher les versions
    ng help — Afficher l'aide
    1. Activité 4 : compiler et tester la version de production

      • Arrêtez ng serve et lancez ng build. Observez dans le terminal la taille totale des fichiers générés.
      • Ouvrez le dossier dist/ma-boutique/browser/: quels fichiers contient-il ? Pourquoi leurs noms contiennent-ils une suite de caractères ?
      • Ouvrez index.html de ce dossier en double-cliquant dessus : la page s'affiche-t-elle ? Expliquez pourquoi (indice : les fichiers doivent être servis par un serveur web).
      • Servez le dossier avec un serveur web local, sans rien installer, grâce à npx :
    npx http-server dist/ma-boutique/browser -p 8080
    • Ouvrez http://localhost:8080: c'est exactement ce que verront les visiteurs une fois l'application publiée.
    • Vérifiez avec git status que le dossier dist/ n'est pas proposé au commit : dans quel fichier est-il exclu ?
  • Activité 5 : défi

    • Sans regarder la leçon, retrouvez la commande qui :
      • crée un projet bibliotheque avec SCSS, sans SSR et avec le préfixe bib;
      • génère le composant livres/carte-livre sans fichier de test et avec un template intégré ;
      • simule la génération d'un pipe shared/majuscule sans créer de fichier ;
      • génère un guard core/admin;
      • lance le serveur sur le port 4500 et ouvre le navigateur ;
      • compile l'application pour une publication dans le sous-dossier /bibliotheque/.
    • Exécutez vos commandes pour les vérifier, puis notez-les dans le fichier README.md du projet, rubrique « Commandes utilisées ».
    • Poussez le projet bibliotheque sur GitHub et partagez le lien du dépôt.
  • À retenir

    • Angular CLI est l'outil officiel, en ligne de commande, pour créer, générer, lancer, tester et compiler un projet Angular. Il s'utilise avec la commande ng.
    • Une commande suit la structure ng <commande> [schéma] [nom] [options], et la plupart des éléments ont une forme courte.
    • ng new se lance depuis le dossier parent ; toutes les autres commandes se lancent à la racine du projet, là où se trouve angular.json.
    • ng serve sert l'application en développement sur le port 4200 ; ng build produit les fichiers à publier dans dist/.
    • --dry-run permet de vérifier une commande avant de l'exécuter, et --help affiche toutes les options.
    La CLI fait le travail répétitif à votre place : prenez l'habitude de générer chaque composant, service ou pipe avec ng generate plutôt que de créer les fichiers à la main.