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 :
developmentproductiontestci
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.jsond'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.