Angular Enterprise
Angular Lib: Monorepository
- Librairies
- 24 liens
- 6 min de lecture
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
Les workspaces de pnpm et de Yarn sont des fonctionnalités de package managers JavaScript, ils permettent d'unifier un unique dossier de dépendances et d'orchestrer des tâches. Lerna se concentre sur le versioning et la publication des packages sur un registre npm. Nx est agnostique du langage, il offre des fonctionnalités variées de gestion du monorepository. Turborepo, créé par Vercel, est un autre orchestrateur de tâches populaire pour les monorepos JavaScript. Voyons en détail ces cinq outils :
- lerna est un outil 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. Depuis 2022 il est maintenu par Nrwl, l'entreprise derrière Nx. 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 stocke les 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é de workspace qui permet d'unifier un seul node_modules de manière performante. pnpm
- yarnpkg est une alternative à npm, le package manager JavaScript fourni avec Node.js. De plus celui-ci a plus de fonctionnalités telles que les plugins et un support pour les monorepositories via la fonctionnalité appelée Yarn workspaces. yarnpkg
- nx contrairement aux autres n'est pas un package manager JavaScript, Nx est un outil agnostique du langage qui offre des 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épendances, les mises à jour automatiques et un système de plugins ouvert. nrwl/nx
- turborepo est une solution de gestion de monorepositories créée par Vercel, une société bien connue dans le monde JavaScript. C'est une bonne alternative à Nx car elle offre des fonctionnalités similaires comme le cache et le graphe de tâches, même si ses fonctionnalités de génération de code et de gestion des contraintes entre les différentes bibliothèques que vous créez sont moins complètes. turborepo
Plugins pour Nx Workspace
Plugins pour langages de programmation
Comme nous l'avons vu plus haut, Nx est agnostique du langage, il permet d'offrir aux développeurs les outils de gestion du repository pour tous les langages, à condition d'avoir un plugin 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
- nxlv/python est un plugin Nx créé par la communauté qui prend en charge le langage de programmation Python. nxlv/python
- nx-dotnet est un autre Nx plugin qui prend en charge la plateforme .NET. Ce dépôt est désormais archivé. 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 Storybook/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 de déploiement continus 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 monorepository Nx. Ce dépôt est désormais archivé. 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. Ce dépôt est désormais archivé. 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. Ce dépôt est désormais archivé. 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 ensemble de plugins 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