Eigentlich ist das Aufteilen von großen Codebases in mehrere Packages eine gute Idee, um die Arbeit mit selbigen zu vereinfachen und das Teilen von Code zu erleichtern. Sind jedoch Änderungen über mehrere Repositories hinweg nötig, wird es schnell kompliziert – insbesondere, weil sich in vielen Fällen Änderungen nur schwer nachverfolgen lassen. So ist wenig überraschend, dass einige Projekte ihre Codebasis in Multi-Package-Repositories organisieren, während andere all ihre Packages innerhalb eines einzigen Repositories entwickeln.
Lerna ist ein Tool, das den Workflow beim Managing von Multi-Package-Repositories mit Git und npm optimieren will. Aktuell wird an Version 2.0 des Tools gearbeitet, die sich derzeit noch in der Beta-Phase befindet. Allerdings empfiehlt das Entwickler-Team auf GitHub für ein neues Projekt die Nutzung von Lerna 2.x Beta.
TypeScript is fun
Learn TypeScript by building a browser game together with trainer David Müllerchen.
Node.js
Unlock the full potential of the server-side JavaScript platform in the workshop with Sebastian Springer.
Arbeit mit Lerna
Lerna will bei der Verwaltung von Multi-Package-Repositories behilflich sein. Dafür bringt das Tool vor allem zwei Befehle mit sich: lerna bootstrap
und lerna publish
. Mithilfe von lerna bootstrap
können Dependencies in einem Repo miteinander verbunden werden, während lerna publish
dabei hilft, alle aktualisierten Packages zu veröffentlichen.
Der Einstieg in die Arbeit mit dem Tool ist denkbar einfach. Es kann über npm global installiert werden; anschließend lässt sich ein neues Git-Repository erstellen und dieses in ein Lerna-Repo umwandeln. Projekte können dann entweder im „Fixed“- oder im „Independent“-Modus verwaltet werden. Für beide Modi stehen zudem einige nützliche Optionen zur Verfügung.
Die Nutzung des Fixed-Modus empfiehlt sich für Nutzer, die automatisch alle Package-Versionen miteinander verknüpfen wollen; er ist zudem der Default-Modus. User sollten allerdings bedenken, dass bei diesem Ansatz eine Major-Änderung in einem Package automatisch in der Aktualisierung aller Packages zu einer neuen Major-Version resultiert.
Wer stattdessen lieber Updates für einzelne Package-Versionen ausspielen möchte, sollte auf den Independent-Modus zurückgreifen. Er erlaubt es, so das Entwickler-Team, „to increment package versions independently of each other“. Vor allem für eine Gruppe von Komponenten sei das sinnvoll, erklärt das Entwickler-Team weiter.
Mehr Informationen dazu sowie zu den einzelnen Optionen, die das Tool bietet, finden sich auf GitHub sowie der Projektwebsite.
Name | Lerna |
---|---|
Projektwebsite | https://lernajs.io/ |
GitHub | https://github.com/lerna/lerna#readme |
Webperformance und Page Speed 2021
mit Sven Wolfermann (maddesigns)
UX Design: Kitsch – du willst es doch auch!
mit Lutz Schmitt (Lutz Schmitt Design & Consulting)
SEO loves PR: Wie zwei Disziplinen gemeinsam erfolgreich sein können
mit Anne Kiefer (sexeedo GmbH)