„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Lerna beherrschen: Ein Leitfaden zum Verwalten von JavaScript-Monorepos

Lerna beherrschen: Ein Leitfaden zum Verwalten von JavaScript-Monorepos

Veröffentlicht am 01.11.2024
Durchsuche:987

Mastering Lerna: A Guide to Managing JavaScript Monorepos

Inhaltsverzeichnis

  1. Einführung
  2. Kapitel 1: Was ist Lerna?
    • Warum Monorepos?
  3. Kapitel 2: Lerna installieren und einrichten
    • Voraussetzungen
    • Schritt-für-Schritt-Installationsanleitung
    • Einrichten Ihres ersten Lerna-Projekts
  4. Kapitel 3: Abhängigkeitsmanagement in Lerna
    • Unabhängige Abhängigkeiten
    • Gemeinsame Abhängigkeiten hochheben
    • Bootstrapping-Pakete
  5. Kapitel 4: Ausführen von Skripten über Pakete hinweg
    • Skripte global ausführen
    • Targeting auf bestimmte Pakete
  6. Kapitel 5: Versionierung und Veröffentlichung mit Lerna
    • Fester Modus vs. unabhängiger Modus
    • Pakete auf npm veröffentlichen
  7. Kapitel 6: Lerna mit Yarn Workspaces verwenden
    • Garn-Arbeitsbereiche in Lerna aktivieren
    • Optimierung des Arbeitsablaufs mit Lerna Yarn Workspaces
  8. Kapitel 7: Erweiterte Lerna-Nutzung
    • Filterbefehle
    • Benutzerdefinierte Befehle erstellen
  9. Kapitel 8: Best Practices für Lerna Monorepos
    • Logische Paketorganisation
    • Tests und Builds automatisieren
    • CI/CD-Integration
  10. Abschluss
  11. Anhang: Allgemeine Lerna-Befehle

Einführung

Die Verwaltung großer JavaScript- oder TypeScript-Projekte mit mehreren voneinander abhängigen Paketen kann für Entwickler und Entwicklungsteams eine große Herausforderung darstellen. Entwickler verlassen sich häufig auf mehrere Repositorys für jedes Paket, was zu einem Mehraufwand in Bezug auf Codepflege, Abhängigkeitsmanagement und Zusammenarbeit führt.

Lerna, ein leistungsstarkes Tool, das für die Verwaltung von Monorepos entwickelt wurde, rationalisiert diesen Prozess. Monorepos ermöglichen es Teams, mehrere Pakete in einem einzigen Repository zu hosten, was das Abhängigkeitsmanagement vereinfacht und die Zusammenarbeit zwischen Teams reibungsloser macht.

Dieses E-Book soll eine vollständige Anleitung zur Verwendung von Lerna zur effizienten Verwaltung Ihrer Monorepos bieten. Unabhängig davon, ob es sich um eine Komponentenbibliothek oder ein Großprojekt mit mehreren miteinander verbundenen Paketen handelt, finden Sie wertvolle Erkenntnisse, die Ihnen dabei helfen, Ihre Produktivität mit Lerna zu maximieren.


Kapitel 1: Was ist Lerna?

Lerna ist ein Open-Source-Tool, das die Verwaltung mehrerer Pakete in einem Monorepo erleichtert. Es bietet leistungsstarke Funktionen wie automatisches Abhängigkeitsmanagement, Versionierung und Veröffentlichung und erleichtert so die Wartung von JavaScript- und TypeScript-Projekten im großen Maßstab.

Warum Monorepos?

Monorepos sind eine architektonische Wahl für viele Großprojekte, da sie mehrere Vorteile bieten:

  • Gemeinsam genutzte Codebasis: Mit Monorepos ist die Wiederverwendung von Code einfacher. Dies reduziert Duplikate und sorgt für Konsistenz über Projekte hinweg.
  • Vereinfachte Zusammenarbeit: Entwickler können effektiver zusammenarbeiten, wenn sich alle Pakete an einem Ort befinden.
  • Einheitliche Build-Prozesse: Die Standardisierung von Build, Test und Bereitstellung über mehrere Pakete hinweg wird einfacher.

Trotz dieser Vorteile kann die Verwaltung eines Monorepos einzigartige Herausforderungen mit sich bringen, insbesondere bei der Verwaltung von Abhängigkeiten und Versionierung. Lerna ist darauf ausgelegt, diese Herausforderungen direkt anzugehen und einen optimierten Arbeitsablauf für Monorepos zu bieten.


Kapitel 2: Lerna installieren und einrichten

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie Node.js und npm (oder Yarn) installiert haben. Lerna ist sowohl mit npm als auch mit Yarn kompatibel.

Schritt 1: Lerna installieren

Sie können Lerna global über npm installieren:

npm install --global lerna

Alternativ können Sie Lerna als Entwicklungsabhängigkeit in Ihrem Projekt hinzufügen:

npm install --save-dev lerna

Schritt 2: Initialisieren eines Lerna Monorepo

Nach der Installation initialisieren Sie Ihr Monorepo, indem Sie zu Ihrem Projektverzeichnis navigieren und Folgendes ausführen:

lerna init

Dadurch werden die wesentlichen Konfigurationsdateien, einschließlich lerna.json, erstellt und ein Paketordner eingerichtet, in dem sich Ihre einzelnen Pakete befinden.

Schritt 3: Pakete hinzufügen

In einem Lerna-Projekt befindet sich jedes Paket in einem eigenen Unterordner unter „Pakete“. Jedes Paket muss über eine eigene package.json-Datei für die Abhängigkeitsverwaltung verfügen.

Beispielstruktur:

/my-project
  /packages
    /package-a
    /package-b
  lerna.json
  package.json

Kapitel 3: Abhängigkeitsmanagement in Lerna

Die Verwaltung von Abhängigkeiten über mehrere Pakete hinweg ist eine der Kernstärken von Lerna.

Unabhängige Abhängigkeiten

Mit Lerna können Sie Abhängigkeiten zu einem bestimmten Paket hinzufügen. Wenn beispielsweise nur package-a lodash benötigt, können Sie Folgendes ausführen:

lerna add lodash --scope=package-a

Gemeinsame Abhängigkeiten hochheben

Wenn mehrere Pakete Abhängigkeiten teilen, können Sie diese Abhängigkeiten in das Stammverzeichnis Ihres Monorepos verschieben. Dies reduziert Redundanz und beschleunigt Installationen. Um das Heben zu aktivieren, fügen Sie Folgendes zu lerna.json hinzu:

{
  "hoist": true
}

Bootstrapping

Um Abhängigkeiten zu installieren und voneinander abhängige Pakete zu verknüpfen, führen Sie Folgendes aus:

lerna bootstrap

Dadurch wird sichergestellt, dass alle erforderlichen externen Abhängigkeiten installiert sind und dass Pakete ordnungsgemäß aufeinander verweisen können.


Kapitel 4: Ausführen von Skripten über Pakete hinweg

Lerna erleichtert die Ausführung von Skripten (z. B. Build, Test, Lint) für alle Pakete in Ihrem Monorepo.

Skripte global ausführen

Um ein Skript wie Build über alle Pakete hinweg auszuführen, verwenden Sie:

lerna run build

Targeting auf bestimmte Pakete

Wenn Sie ein Skript nur in bestimmten Paketen ausführen möchten, verwenden Sie das Flag --scope:

lerna run test --scope=package-a

Diese Flexibilität ermöglicht eine gezieltere Ausführung und spart Zeit während der Entwicklung.


Kapitel 5: Versionierung und Veröffentlichung mit Lerna

Lerna bietet robuste Versionierungs- und Veröffentlichungsfunktionen, mit denen Sie Pakete einfach versionieren und veröffentlichen können.

1. Fester Modus

Im festen Modus haben alle Pakete dieselbe Versionsnummer. Wenn ein Paket aktualisiert wird, wird die Versionsnummer für alle erhöht.

2. Unabhängiger Modus

Im unabhängigen Modus hat jedes Paket seine eigene Versionsnummer. Wenn ein Paket geändert wird, wird nur die Version dieses Pakets aktualisiert.

Um in den unabhängigen Modus zu wechseln, ändern Sie lerna.json:

{
  "version": "independent"
}

Pakete veröffentlichen

Um Ihre Pakete auf npm zu veröffentlichen, führen Sie Folgendes aus:

lerna publish

Lerna übernimmt die Versionierung und Veröffentlichung basierend auf Ihrer Konfiguration.


Kapitel 6: Lerna mit Yarn Workspaces verwenden

Die Kombination von Lerna mit Yarn Workspaces kann das Abhängigkeitsmanagement weiter optimieren, indem noch mehr gemeinsame Abhängigkeiten angehoben werden.

Um Yarn Workspaces zu aktivieren, ändern Sie Ihre lerna.json-Datei:

{
  "npmClient": "yarn",
  "useWorkspaces": true
}

Dann aktualisieren Sie Ihre package.json:

{
  "workspaces": ["packages/*"]
}

Diese Integration steigert die Leistung und vereinfacht die Verwaltung großer Projekte.


Kapitel 7: Erweiterte Lerna-Nutzung

Filterbefehle

Lerna ermöglicht das Filtern, um Befehle für bestimmte Pakete auszuführen oder bestimmte Pakete auszuschließen.

Beispiel für die Ausführung auf bestimmten Paketen:

lerna run build --scope=package-a --scope=package-b

Beispiel für den Ausschluss von Paketen:

lerna run build --ignore=package-c

Benutzerdefinierte Befehle

Sie können benutzerdefinierte Lerna-Befehle in package.json für spezielle Arbeitsabläufe definieren. Diese Befehle können dann in Ihren Paketen ausgeführt werden.


Kapitel 8: Best Practices für Lerna Monorepos

  1. Pakete logisch organisieren: Gruppieren Sie verwandte Pakete für eine bessere Code-Wiederverwendung.
  2. Hoisting verwenden: Das Heben gemeinsamer Abhängigkeiten spart Platz und beschleunigt die Installationszeiten.
  3. Tests automatisieren: Verwenden Sie lerna run, um Tests in Ihrem gesamten Monorepo zu automatisieren.
  4. CI/CD-Pipelines: Implementieren Sie kontinuierliche Integrations- und Bereitstellungsworkflows, um Änderungen automatisch zu testen und bereitzustellen.
  5. Yarn Workspaces: Nutzen Sie Yarn Workspaces mit Lerna für ein besseres Abhängigkeitsmanagement.

Abschluss

Lerna ist ein unschätzbar wertvolles Tool für die Verwaltung von Monorepos und bietet Funktionen, die komplexe Arbeitsabläufe vereinfachen, von der Abhängigkeitsverwaltung bis hin zur Versionierung und Veröffentlichung. Durch die Einführung von Lerna können Teams die Komplexität reduzieren, Prozesse rationalisieren und die Zusammenarbeit verbessern, was die Verwaltung großer Projekte erleichtert.

Egal, ob Sie an einer einfachen Komponentenbibliothek oder einem Ökosystem mit mehreren Paketen arbeiten, Lerna bietet die Tools, die Sie für die effektive Verwaltung Ihres Projekts benötigen. Experimentieren Sie weiter mit den erweiterten Funktionen von Lerna, um sein volles Potenzial auszuschöpfen.


Anhang: Allgemeine Lerna-Befehle

  • lerna init: Initialisiert ein Lerna-Monorepo.
  • lerna Bootstrap: Installiert Abhängigkeiten und verknüpft Pakete.
  • lerna add [package] --scope=[package-name]: Fügt eine Abhängigkeit zu einem bestimmten Paket hinzu.
  • lerna run [script]: Führt ein Skript über alle Pakete hinweg aus.
  • lerna veröffentlichen: Veröffentlicht Pakete auf npm.

Viel Spaß beim Programmieren :)

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/samuel_kinuthia/mastering-lerna-a-guide-to-managing-javascript-monorepos-4f2b?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen Es
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3