"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Maîtriser Lerna : un guide pour gérer les monorepos JavaScript

Maîtriser Lerna : un guide pour gérer les monorepos JavaScript

Publié le 2024-11-01
Parcourir:746

Mastering Lerna: A Guide to Managing JavaScript Monorepos

Table des matières

  1. Introduction
  2. Chapitre 1 : Qu'est-ce que Lerne ?
    • Pourquoi Monorepos ?
  3. Chapitre 2 : Installation et configuration de Lerna
    • Prérequis
    • Guide d'installation étape par étape
    • Configuration de votre premier projet Lerna
  4. Chapitre 3 : Gestion des dépendances à Lerne
    • Dépendances indépendantes
    • Hisser les dépendances partagées
    • Packages d'amorçage
  5. Chapitre 4 : Exécution de scripts sur plusieurs packages
    • Exécution de scripts à l'échelle mondiale
    • Ciblage de packages spécifiques
  6. Chapitre 5 : Gestion des versions et publication avec Lerna
    • Mode fixe vs mode indépendant
    • Publication de packages sur npm
  7. Chapitre 6 : Utiliser Lerna avec les espaces de travail Yarn
    • Activation des espaces de travail Yarn à Lerne
    • Optimisation du flux de travail avec les espaces de travail Lerna Yarn
  8. Chapitre 7 : Utilisation avancée de Lerna
    • Commandes de filtrage
    • Création de commandes personnalisées
  9. Chapitre 8 : Meilleures pratiques pour Lerna Monorepos
    • Organisation du package logique
    • Automatisation des tests et des builds
    • Intégration CI/CD
  10. Conclusion
  11. Annexe : Commandes Lerna courantes

Introduction

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.


Chapitre 1 : Qu'est-ce que Lerne ?

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.

Pourquoi Monorepos ?

Les Monorepos sont un choix architectural pour de nombreux projets à grande échelle, car ils offrent plusieurs avantages :

  • Base de code partagée : avec les monorepos, la réutilisation du code est plus facile. Cela réduit la duplication et garantit la cohérence entre les projets.
  • Collaboration simplifiée : les développeurs peuvent travailler ensemble plus efficacement lorsque tous les packages sont regroupés au même endroit.
  • Processus de build unifiés : la normalisation de la build, des tests et du déploiement sur plusieurs packages devient plus facile.

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.


Chapitre 2 : Installation et configuration de Lerna

Prérequis

Avant de commencer, assurez-vous que Node.js et npm (ou Yarn) sont installés. Lerna est compatible avec npm et Yarn.

Étape 1 : Installation de Lerna

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

Étape 2 : Initialisation d'un monorepo 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.

Étape 3 : Ajout de packages

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

Chapitre 3 : Gestion des dépendances à Lerne

La gestion des dépendances entre plusieurs packages est l'une des principales forces de Lerna.

Dépendances indépendantes

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

Hisser les dépendances partagées

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
}

Amorçage

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.


Chapitre 4 : Exécution de scripts sur plusieurs packages

Lerna facilite l'exécution de scripts (par exemple, build, test, lint) sur tous les packages de votre monorepo.

Exécution de scripts à l'échelle mondiale

Pour exécuter un script tel que build sur tous les packages, utilisez :

lerna run build

Ciblage de packages spécifiques

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.


Chapitre 5 : Gestion des versions et publication avec Lerna

Lerna fournit des fonctionnalités robustes de gestion de versions et de publication, vous permettant de versionner et de publier facilement des packages.

1. Mode fixe

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.

2. Mode indépendant

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"
}

Forfaits de publication

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.


Chapitre 6 : Utiliser Lerna avec les espaces de travail Yarn

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.


Chapitre 7 : Utilisation avancée de Lerna

Commandes de filtrage

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

Commandes personnalisées

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.


Chapitre 8 : Meilleures pratiques pour Lerna Monorepos

  1. Organiser les packages de manière logique : regroupez les packages associés pour une meilleure réutilisation du code.
  2. Utiliser le levage : le levage des dépendances partagées permet d'économiser de l'espace et d'accélérer les temps d'installation.
  3. Automatiser les tests : utilisez lerna run pour automatiser les tests sur l'ensemble de votre monorepo.
  4. Pipelines CI/CD : mettez en œuvre des workflows d'intégration et de déploiement continus pour tester et déployer automatiquement les modifications.
  5. Espaces de travail Yarn : exploitez les espaces de travail Yarn avec Lerna pour une meilleure gestion des dépendances.

Conclusion

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.


Annexe : Commandes Lerna courantes

  • lerna init : initialise un monorepo Lerna.
  • lerna bootstrap : installe les dépendances et lie les packages.
  • lerna add [package] --scope=[package-name] : ajoute une dépendance à un package spécifique.
  • lerna run [script] : exécute un script sur tous les packages.
  • lerna submit : publie les packages sur npm.

Joyeux codage :)

Déclaration de sortie Cet article est reproduit sur : https://dev.to/samuel_kinuthia/mastering-lerna-a-guide-to-managing-javascript-monorepos-4f2b?1 En cas de violation, veuillez contacter [email protected] pour supprimer il
Dernier tutoriel Plus>

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