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.
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.
Monorepos sind eine architektonische Wahl für viele Großprojekte, da sie mehrere Vorteile bieten:
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.
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.
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
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.
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
Die Verwaltung von Abhängigkeiten über mehrere Pakete hinweg ist eine der Kernstärken von Lerna.
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
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 }
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.
Lerna erleichtert die Ausführung von Skripten (z. B. Build, Test, Lint) für alle Pakete in Ihrem Monorepo.
Um ein Skript wie Build über alle Pakete hinweg auszuführen, verwenden Sie:
lerna run build
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.
Lerna bietet robuste Versionierungs- und Veröffentlichungsfunktionen, mit denen Sie Pakete einfach versionieren und veröffentlichen können.
Im festen Modus haben alle Pakete dieselbe Versionsnummer. Wenn ein Paket aktualisiert wird, wird die Versionsnummer für alle erhöht.
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" }
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.
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.
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
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.
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.
Viel Spaß beim Programmieren :)
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