Aller au contenu

Présentation de Nx

Vue d'ensemble

Le monorepo Feelbat est construit avec Nx.

Nx est un outil permettant de gérer un monorepo composé de plusieurs applications et bibliothèques tout en proposant une manière standardisée de construire, tester et exécuter les projets.

Chez Feelbat, toutes les applications, tous les services backend et les bibliothèques partagées sont gérés par Nx.

Objectif

À la fin de ce guide, vous comprendrez :

  • Ce qu'est un projet Nx.
  • Comment sont organisés les projets dans le monorepo.
  • Le rôle des fichiers project.json.
  • Le fonctionnement des targets et des configurations.
  • Comment exécuter un projet avec Nx.

Un projet Nx

Chaque application ou bibliothèque du monorepo est un projet Nx.

Par exemple :

apps/api/auth
apps/api/sensors
apps/web/dashboard
libs/feelbat/kafka

Chaque projet possède sa propre configuration et son propre cycle de vie.

flowchart TD
    Monorepo --> Auth
    Monorepo --> Sensors
    Monorepo --> Dashboard
    Monorepo --> Kafka

Le fichier project.json

Chaque projet possède un fichier project.json.

Ce fichier décrit notamment :

  • les targets disponibles ;
  • les configurations ;
  • les options d'exécution ;
  • les exécutants (executors).

Exemple simplifié :

{
  "targets": {
    "server": {},
    "build": {},
    "test": {}
  }
}

Toutes les commandes Nx exécutées sur un projet s'appuient sur cette configuration.

Les targets

Un target représente une action qu'un projet est capable d'exécuter.

Quelques exemples utilisés dans le monorepo :

Target Description
serve Lance un service en watch mode.
build Génère un build du projet.
test Exécute les tests.
lint Analyse le code avec le linter.
infra-local Démarre une partie de l'infrastructure Docker.

Les configurations

Un target peut définir plusieurs configurations.

Les plus courantes sont :

  • development
  • production
  • test
  • ci

Une configuration permet de modifier le comportement du target sans créer un nouveau target.

Une commande Nx

La majorité des commandes suivent le format suivant :

pnpm nx run <project>:<target>:<configuration>

Exemple :

pnpm nx run @feelbat/auth:serve:development

Décomposition de la commande :

Élément Valeur Description
Projet @feelbat/auth Projet à exécuter.
Target serve Action à exécuter.
Configuration development Variante du target.

Le fonctionnement est résumé ci-dessous :

flowchart LR
    Projet --> Target
    Target --> Configuration

Nx Console

Pour les développeurs utilisant Visual Studio Code, l'extension Nx Console est fortement recommandée.

Elle permet notamment de :

  • parcourir les projets du monorepo ;
  • exécuter les targets sans mémoriser les commandes ;
  • visualiser les options disponibles ;
  • lancer rapidement les configurations d'un projet.

Tip

Pour les nouveaux développeurs, Nx Console est généralement le moyen le plus simple de découvrir les projets disponibles dans le monorepo.

Commandes utiles

Afficher tous les projets :

pnpm nx show projects

Afficher les informations d'un projet :

pnpm nx show project @feelbat/auth

Afficher le graphe des dépendances :

pnpm nx graph

Bonnes pratiques

  • Utilisez les targets définis par Nx plutôt que des scripts personnalisés.
  • Gardez les commandes cohérentes entre les projets.
  • Privilégiez Nx Console lorsque vous découvrez un projet.
  • Consultez le project.json d'un projet pour connaître les actions qu'il expose.

À retenir

  • Chaque application ou bibliothèque est un projet Nx.
  • Les projets sont configurés à l'aide d'un project.json.
  • Les targets définissent les actions disponibles.
  • Les configurations permettent d'adapter un target à un contexte particulier.
  • Toutes les commandes Nx suivent la même structure, ce qui facilite la prise en main du monorepo.