Angular
Enterprise
./assets/drawing/angular-resources-libraries-monorepository.svg

Angular Lib: Monorepository

Retrouvez ici les différents outils et plugins monorepository permettant de développer efficacement plusieurs packages dans un même repository. Attention cependant, chaque outil et plugin a son propre objectif et donc quand vous les comparez vous voyez qu'ils n'offrent pas les mêmes fonctionnalités. Vous devez connaître votre propre objectif afin de choisir les bonnes bibliothèques et plugins de la liste ci-dessous.

Outils de Monorepository

Lerna, Pnpm workspaces et Yarn workspaces sont des package managers pour Javascript, ils permettent d'unifier un unique dossier de dépendances, orchestrer des tâches. Lerna permet en plus de publier les packages sur un repository NPM. Nx workspace lui est language agnostique, il offre des fonctionnalitées variés de gestion du monorepository. Turborepo est un nouveau venu dans le monde des outils monorepo. Voyons en détail ces cinq outils :

  • lerna est un outil de package manager pour Javascript qui permet d'organiser sa base de packages dans un unique repository tout en offrant des fonctionnalités d'orchestration et de publication en plus d'une gestion unifiée du node_modules. lerna
  • pnpm est un outil de package manager pour Javascript qui permet de résoudre les problèmes de lenteur et d'espace disque rencontrés avec les outils classiques que sont NPM et Yarn, en effet PNPM stoque le fichiers via un système de fichiers adressable par le contenu ce qui permet de mieux gérer les diff entre les différentes versions de package. De plus l'outil supporte l'architecture monorepository via sa fonctionnalitée de workspace qui permet d'unifier un seul node_modules de manière performante. pnpm
  • yarnpkg est une alternative au package manager Javascript classique fournit par NodeJS. De plus celui ci à plus de fonctionnalitées tels que les plugins et un support pour les monorepositories via la fonctionnalité appelée Yarn workspaces. yarnpkg
  • nx contrairement aux autre n'est pas un package manager Javascript, Nx est un outil language agnostique qui offre de outils de gestion du repository tels que des builds intelligents, le caching local et partagé, les règles et contraintes, la génération de code, la visualisation des dépendences, les mises à jour automatique et un système de plugin ouvert. nrwl/nx
  • turborepo est une solution assez nouvelle pour créer des monodépôts, un bon argument est qu'elle est en cours de construction par Vercel, une société bien connue dans le monde Javascript. C'est une bonne alternative à NX car il offre quasiment les mêmes fonctionnalités comme le cache, le graphe de visualisation cependant il n'y a toujours pas de système de gestion des contraintes et de visibilité entre les différentes bibliothèques que vous créez.turborepo

Plugins pour Nx Workspace

Plugins pour langages de programmation

Comme nous l'avons vu plus haut, Nx workspace est langage agnostique, il permet d'offrir aux développeurs les outils de gestion du repository pour tous les langages, à condition d'avoir un plugin de développé pour chacun. Voici ci dessous les plugins qui permettent d'étendre le support aux langages les plus utilisés.

  • nxrs/cargo est un plugin communautaire Nx qui prend en charge le langage de programmation Rust. nxrs/cargo
  • nx-go offre un support pour le langage de programmation Go. nx-go
  • nx-python est un plugin Nx créé par la communauté qui prend en charge le langage de programmation Python. nx-python
  • nx-python est un autre plugin Nx pour utiliser Python dans un espace de travail Nx. nx-python
  • nx-dotnet est un autre Nx plugin qui prend en charge le langage de programmation .Net. nx-dotnet

Plugins pour frameworks et libs

Si vous travaillez avec Angular et aussi dans un environnement multi plateforme complexe ou mobile et hybride vous trouverez ci-dessous de nombreux outils pour faciliter le travail.

  • nx-firebase fournit un support pour les projets Firebase dans un espace de travail Nx monorepo afin d'aider à être productif dans la création et le déploiement de projets Firebase. nx-firebase
  • nx-electron fournit un ensemble d'utilitaires prêts à l'emploi sur Nx pour développer et packager des applications de bureau multiplateformes à l'aide d'Electron. nx-electron
  • nativescript/nx est un plugin pour Nx qui aide à initialiser un nouveau projet d'application mobile multiplateforme Nativescript dans un monorepository Nx. nativescript/nx
  • nx-stylelint fournit un ensemble de fonctionnalités pour linter vos feuilles de style avec Stylelint. nx-stylelint
  • nx-extensions fournit un ensemble de divers plugins pour travailler avec de nombreux frameworks et bibliothèques différents tels que: StencilJS, SvelteJS, ViteJS ou Docusaurus. nx-extensions
  • twittwer/nx-tools fournit deux plugins pour aider à la configuration d'un environnement. Le premier installe Compodoc et le deuxième installe un mashup original de Storybooks/Compodoc. twittwer/nx-tools

Plugins pour l'intégration continue

Utilisez toute la puissance de Nx workspace pour construire un pipeline d'intégration et déploiement continue robuste et rapide.

  • nrwl-nx-action est une GitHub Action qui facilite l'encapsulation des commandes Nrwl Nx dans vos workflows afin d'optimiser vos tâches en les exécutant uniquement sur les projets concernés. nrwl-nx-action
  • nrwl/nx-orb est un template de démarrage Nx officiel pour les projets Orb qui fournit des exemples d'exécution de diverses tâches telles que le build, le test et la publication automatique sur CircleCI avec Orb-Tools. nrwl/nx-orb
  • nrwl/nx-jenkins-build est un exemple officiel qui démontre l'utilisation d'un pipeline Jenkins distribué dans un monoréférentiel Nx. nrwl/nx-jenkins-build
  • nrwl/nx-azure-build est un autre exemple officiel qui illustre l'utilisation d'un pipeline Azure distribué dans un monorepository Nx. nrwl/nx-azure-build
  • nx-cloud/travis-ci est un exemple réalisé par la communauté qui démontre l'utilisation de Nx Cloud dans un pipeline Travis CI. nx-cloud/travis-ci

Plugins utilitaires

Trouvez ici tous les différents utilitaires créés par la communauté qui aident à travailler avec Nx au quotidien.

  • nxpm/nxpm-cli est une CLI visant à offrir une expérience interactive pour travailler avec l'espace de travail Nx. nxpm/nxpm-cli
  • bielik20/nx-plugins est un ensemble de plugins pour aider à travailler sur différents sujets : publication et versioning npm, architecture serverless, jest-playwright... bielik20/nx-plugins
  • dev-thought/nx-plugins est une collection de plugins NX créés par Mitko Tschimev et d'autres développeurs. Le plugin principal est ng-deploy-it qui aide au déploiement d'applications dans votre fournisseur de cloud actuel tel que Google Cloud, Amazon Web Services ou Microsoft Azure. dev-thought/nx-plugins
  • flowaccount/nx-plugins est un autre plugin qui offre des déploiements transparents avec des frameworks tels que Serverless Framework et Amazon CDK pour travailler avec une architecture IaC.flowaccount/nx-plugins

En apprendre plus sur Angular

Liste complète des librairies angular pour le state management avec ngrx .