Maison > interface Web > js tutoriel > Maîtriser Lerna : un guide pour gérer les monorepos JavaScript

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

DDD
Libérer: 2024-09-18 20:23:17
original
652 Les gens l'ont consulté

Mastering Lerna: A Guide to Managing JavaScript Monorepos

Table des matières

  1. Présentation
  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
    • Forfaits d'amorçage
  5. Chapitre 4 : Exécution de scripts sur plusieurs packages
    • Exécuter des 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

Présentation

Gérer des 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 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 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 poser 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 d'avoir Node.js et npm (ou Yarn) installés. Lerna est compatible avec npm et Yarn.

Étape 1 : Installer Lerna

Vous pouvez installer Lerna globalement via npm :

npm install --global lerna
Copier après la connexion

Vous pouvez également ajouter Lerna comme dépendance de développement dans votre projet :

npm install --save-dev lerna
Copier après la connexion

Étape 2 : Initialisation d'un Lerna Monorepo

Une fois installé, initialisez votre monorepo en accédant au répertoire de votre projet et en exécutant :

lerna init
Copier après la connexion

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 : Ajouter des 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
Copier après la connexion

Chapter 3: Dependency Management in Lerna

Managing dependencies across multiple packages is one of Lerna’s core strengths.

Independent Dependencies

Lerna allows you to add dependencies to a specific package. For example, if only package-a needs lodash, you can run:

lerna add lodash --scope=package-a
Copier après la connexion

Hoisting Shared Dependencies

When multiple packages share dependencies, you can hoist those dependencies to the root of your monorepo. This reduces redundancy and speeds up installations. To enable hoisting, add this to lerna.json:

{
  "hoist": true
}
Copier après la connexion

Bootstrapping

To install dependencies and link packages that depend on one another, run:

lerna bootstrap
Copier après la connexion

This ensures that all necessary external dependencies are installed and that packages can reference each other properly.


Chapter 4: Running Scripts Across Packages

Lerna makes it easy to execute scripts (e.g., build, test, lint) across all packages in your monorepo.

Executing Scripts Globally

To run a script like build across all packages, use:

lerna run build
Copier après la connexion

Targeting Specific Packages

If you only want to run a script in certain packages, use the --scope flag:

lerna run test --scope=package-a
Copier après la connexion

This flexibility allows for more targeted execution, saving time during development.


Chapter 5: Versioning and Publishing with Lerna

Lerna provides robust versioning and publishing features, allowing you to easily version and release packages.

1. Fixed Mode

In fixed mode, all packages share the same version number. When any package is updated, the version number is incremented for all.

2. Independent Mode

In independent mode, each package has its own version number. When a package is changed, only that package’s version is updated.

To switch to independent mode, modify lerna.json:

{
  "version": "independent"
}
Copier après la connexion

Publishing Packages

To publish your packages to npm, run:

lerna publish
Copier après la connexion

Lerna will handle versioning and publishing based on your configuration.


Chapter 6: Using Lerna with Yarn Workspaces

Combining Lerna with Yarn Workspaces can further optimize dependency management by hoisting even more shared dependencies.

To enable Yarn Workspaces, modify your lerna.json file:

{
  "npmClient": "yarn",
  "useWorkspaces": true
}
Copier après la connexion

Then update your package.json:

{
  "workspaces": ["packages/*"]
}
Copier après la connexion

This integration boosts performance and simplifies managing large-scale projects.


Chapter 7: Advanced Lerna Usage

Filtering Commands

Lerna allows filtering to run commands for specific packages or to exclude certain packages.

Example for running on specific packages:

lerna run build --scope=package-a --scope=package-b
Copier après la connexion

Example for excluding packages:

lerna run build --ignore=package-c
Copier après la connexion

Custom Commands

You can define custom Lerna commands within package.json for specialized workflows. These commands can then be run across your packages.


Chapter 8: Best Practices for Lerna Monorepos

  1. Organize Packages Logically: Group related packages together for better code reuse.
  2. Use Hoisting: Hoisting shared dependencies saves space and speeds up install times.
  3. Automate Testing: Use lerna run to automate testing across your entire monorepo.
  4. CI/CD Pipelines: Implement continuous integration and deployment workflows to automatically test and deploy changes.
  5. Yarn Workspaces: Leverage Yarn Workspaces with Lerna for better dependency management.

Conclusion

Lerna is an invaluable tool for managing monorepos, offering features that simplify complex workflows, from dependency management to versioning and publishing. By adopting Lerna, teams can reduce complexity, streamline processes, and improve collaboration, making it easier to maintain large-scale projects.

Whether you’re working on a simple component library or a multi-package ecosystem, Lerna provides the tools needed to manage your project effectively. Keep experimenting with Lerna’s advanced features to unlock its full potential.


Annexe : Commandes courantes de Lerna

  • 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 :)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal