La gestion de projets JavaScript ou TypeScript à grande échelle impliquant plusieurs packages interdépendants peut constituer un défi de taille pour les développeurs et les équipes de développement. Souvent, les développeurs s'appuient sur plusieurs référentiels pour chaque package, ce qui entraîne une surcharge en termes de maintenance du code, de gestion des dépendances et de collaboration.
Lerna, un outil puissant développé pour gérer les monorepos, rationalise ce processus. Monorepos permet aux équipes d'héberger plusieurs packages dans un seul référentiel, simplifiant ainsi la gestion des dépendances et rendant la collaboration entre les équipes plus fluide.
Cet ebook vise à fournir un guide complet d'utilisation de Lerna pour gérer efficacement vos monorepos. Qu'il s'agisse d'une bibliothèque de composants ou d'un projet à grande échelle avec plusieurs packages interconnectés, vous trouverez des informations précieuses pour vous aider à maximiser votre productivité avec Lerna.
Lerna est un outil open source qui facilite la gestion de plusieurs packages dans un monorepo. Il offre des fonctionnalités puissantes telles que la gestion automatique des dépendances, la gestion des versions et la publication, facilitant ainsi la maintenance des projets JavaScript et TypeScript à grande échelle.
Les Monorepos sont un choix architectural pour de nombreux projets à grande échelle, car ils offrent plusieurs avantages :
Malgré ces avantages, la gestion d'un monorepo peut présenter des défis uniques, notamment dans la gestion des dépendances et du versioning. Lerna est conçu pour relever ces défis de front, en fournissant un flux de travail optimisé pour les monorepos.
Avant de commencer, assurez-vous que Node.js et npm (ou Yarn) sont installés. Lerna est compatible avec npm et Yarn.
Vous pouvez installer Lerna globalement via npm :
npm install --global lerna
Vous pouvez également ajouter Lerna comme dépendance de développement dans votre projet :
npm install --save-dev lerna
Une fois installé, initialisez votre monorepo en accédant au répertoire de votre projet et en exécutant :
lerna init
Cela créera les fichiers de configuration essentiels, y compris lerna.json, et configurera un dossier de packages dans lequel résideront vos packages individuels.
Dans un projet Lerna, chaque package réside dans son propre sous-dossier sous packages. Chaque package doit avoir son propre fichier package.json pour la gestion des dépendances.
Exemple de structure :
/my-project /packages /package-a /package-b lerna.json package.json
La gestion des dépendances entre plusieurs packages est l'une des principales forces de Lerna.
Lerna vous permet d'ajouter des dépendances à un package spécifique. Par exemple, si seul le package-a a besoin de lodash, vous pouvez exécuter :
lerna add lodash --scope=package-a
Lorsque plusieurs packages partagent des dépendances, vous pouvez hisser ces dépendances à la racine de votre monorepo. Cela réduit la redondance et accélère les installations. Pour activer le levage, ajoutez ceci à lerna.json :
{ "hoist": true }
Pour installer des dépendances et lier des packages qui dépendent les uns des autres, exécutez :
lerna bootstrap
Cela garantit que toutes les dépendances externes nécessaires sont installées et que les packages peuvent se référencer correctement.
Lerna facilite l'exécution de scripts (par exemple, build, test, lint) sur tous les packages de votre monorepo.
Pour exécuter un script tel que build sur tous les packages, utilisez :
lerna run build
Si vous souhaitez exécuter un script uniquement dans certains packages, utilisez l'indicateur --scope :
lerna run test --scope=package-a
Cette flexibilité permet une exécution plus ciblée, ce qui permet de gagner du temps lors du développement.
Lerna fournit des fonctionnalités robustes de gestion de versions et de publication, vous permettant de versionner et de publier facilement des packages.
En mode fixe, tous les packages partagent le même numéro de version. Lorsqu'un package est mis à jour, le numéro de version est incrémenté pour tous.
En mode indépendant, chaque package possède son propre numéro de version. Lorsqu'un package est modifié, seule la version de ce package est mise à jour.
Pour passer en mode indépendant, modifiez lerna.json :
{ "version": "independent" }
Pour publier vos packages sur npm, exécutez :
lerna publish
Lerna gérera la gestion des versions et la publication en fonction de votre configuration.
La combinaison de Lerna avec Yarn Workspaces peut optimiser davantage la gestion des dépendances en hissant encore plus de dépendances partagées.
Pour activer Yarn Workspaces, modifiez votre fichier lerna.json :
{ "npmClient": "yarn", "useWorkspaces": true }
Puis mettez à jour votre package.json :
{ "workspaces": ["packages/*"] }
Cette intégration améliore les performances et simplifie la gestion des projets à grande échelle.
Lerna permet le filtrage pour exécuter des commandes pour des packages spécifiques ou pour exclure certains packages.
Exemple d'exécution sur des packages spécifiques :
lerna run build --scope=package-a --scope=package-b
Exemple d'exclusion de packages :
lerna run build --ignore=package-c
Vous pouvez définir des commandes Lerna personnalisées dans package.json pour des flux de travail spécialisés. Ces commandes peuvent ensuite être exécutées sur vos packages.
Lerna est un outil inestimable pour gérer les monorepos, offrant des fonctionnalités qui simplifient les flux de travail complexes, de la gestion des dépendances à la gestion des versions et à la publication. En adoptant Lerna, les équipes peuvent réduire la complexité, rationaliser les processus et améliorer la collaboration, facilitant ainsi la gestion de projets à grande échelle.
Que vous travailliez sur une simple bibliothèque de composants ou sur un écosystème multi-packages, Lerna fournit les outils nécessaires pour gérer efficacement votre projet. Continuez à expérimenter les fonctionnalités avancées de Lerna pour libérer tout son potentiel.
Joyeux codage :)
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3