Que fait nx-workspace-patterns ?
Configurez et optimisez les espaces de travail monorepo Nx. À utiliser lors de la configuration de Nx, de la définition des limites de projets, de l'optimisation du cache de compilation ou de l'implémentation des commandes affectées.
Vue d'ensemble
Cette compétence vous aide à configurer et optimiser des espaces de travail monorepo avec Nx, un outil puissant de gestion de builds et de dépendances. Elle couvre les aspects essentiels pour tirer le meilleur parti de Nx dans vos projets.
Fonctionnalités principales
- Configuration initiale : Mise en place rapide de Nx dans un monorepo existant ou nouveau.
- Limites de projets : Définition de tags et de contraintes pour isoler les projets et éviter les dépendances non autorisées.
- Cache de compilation : Optimisation du cache pour des builds plus rapides.
- Commandes affectées : Utilisation de
nx affectedpour exécuter des tâches uniquement sur les projets modifiés.
Prérequis
- Node.js v14 ou supérieur
- Nx CLI installé globalement ou via npm
- Un projet monorepo existant (ou la volonté d'en créer un)
Installation
npm install -g nx
# ou
npx nx
Configuration
Étape 1 : Initialiser Nx
npx nx init
Étape 2 : Définir les limites de projets
Créez un fichier .eslintrc.json avec des règles de dépendances :
{
"rules": {
"@nrwl/nx/enforce-module-boundaries": [
"error",
{
"depConstraints": [
{
"sourceTag": "scope:shared",
"onlyDependOnLibsWithTags": ["scope:shared"]
},
{
"sourceTag": "scope:feature",
"onlyDependOnLibsWithTags": ["scope:shared", "scope:feature"]
}
]
}
]
}
}
Étape 3 : Optimiser le cache
Configurez le cache dans nx.json :
{
"tasksRunnerOptions": {
"default": {
"options": {
"cacheableOperations": ["build", "test", "lint"],
"cacheDirectory": ".cache/nx"
}
}
}
}
Étape 4 : Utiliser les commandes affectées
nx affected:build --base=main
nx affected:test --base=main
Exemple d'utilisation
Supposons que vous ayez un monorepo avec des applications app1 et app2, et des librairies shared-lib et feature-lib. Vous pouvez configurer les limites comme suit :
nx generate @nrwl/workspace:lib shared-lib --tags=scope:shared
nx generate @nrwl/workspace:lib feature-lib --tags=scope:feature
nx generate @nrwl/workspace:app app1 --tags=scope:feature
nx generate @nrwl/workspace:app app2 --tags=scope:feature
Pour exécuter les tests uniquement sur les projets affectés par une modification récente :
git add .
git commit -m "Modification de shared-lib"
nx affected:test
Ressources supplémentaires
Support
Pour toute question ou problème, veuillez ouvrir une issue sur le dépôt GitHub correspondant.