Anzeige
Anzeige
News
Artikel merken

Yarn 2 kommt mit interessanten neuen Features

 Am Freitag wurde Yarn 2 gelauncht! Was der Major Release alles mitbringt und ob das Upgrade für euch in Frage kommt, lest ihr hier.

5 Min. Lesezeit
Anzeige
Anzeige

(Bild: Noam Armonn/Shutterstock)

Yarn, der rückwärtskompatible Client für das npm-Paketregister aus den Software-Schmieden von Facebook, Google, Exponent und Tilde wurde 2016 quelloffen und wird seither von einem beträchtlichen Teil der JavaScript-Community genutzt. Vor einem Jahr gab Mael Nison, Lead-Maintainer des Projekts, bekannt, an einer 2. Version zu arbeiten. Der Nachfolger der beliebten npm-Alternative wurde am Freitag, genau ein Jahr nach der Ankündigung gelauncht und kommt mit einigen Veränderungen, sowie einer Menge neuer Features daher.

Der CLI-Output

Die CLI-Outputs in Yarn 2 wurden gründlich überarbeitet. Statt kryptischer Fehlermeldungen bekommt ihr Messages mit Error Codes, nach denen ihr in der Doku suchen könnt. Dort findet ihr Erklärungen inklusive Lösungsvorschlägen dazu. Außerdem wurde die Farbgebung der Fehlermeldungen überarbeitet.

Behaltet den Überblick über eure Workspaces

Mit Yarn 2 könnt ihr über yarn up <name> ein Package in allen Workspaces eines Projekts gleichzeitig updaten, yarn add -i <name> lässt euch im gegenwärtigen Workspace die selbe Version einer Dependency zu nutzen, die ihr in den anderen nutzt. Und: Das Version-Plugin bietet einen Weg, um alle Referenzen zu verknüpften Workspaces automatisch zu updaten – in Yarn 1 musste das für jeden Server und jeden Client manuell gemacht werden.

Den Überblick über Änderungen in euren Workspaces und Releases behaltet ihr in Yarn 2 mithilfe des version-plugins, das euch erlaubt, Release-Verantwortlichkeiten an Contributors zu delegieren. Fancy: Das Plugin hat außerdem ein visuelles Interface, das das Workspace-Management vereinfacht.

Achtung: Noch befindet sich die Funktionalität im sogenannten Experimental Mode.

Neue Commands

Yarn 2 hat zwei neue Commands im Gepäck. Erstens ist da yarn dlx – quasi das  Äquivalent zu npx. Yarn dlx ist dabei sicherer, da es – anders als npx – ausschließlich Remote Scripts lädt und ausführt. Lokale Scripts lassen sich separat über yarn run oder einfach über ihren Namen ausführen.

Hinzu kommt yarn workspaces foreach. In Yarn 1 braucht ihr ein externes Tool, um einen Command über mehrere Repos auszuführen. Yarn 2 bringt nun ein Plugin namens workspace-tools mit, das neben eben dieser Funktionalität außerdem Möglichkeiten bietet, Commands parallel auszuführen, Dependencies zu folgen oder Workspaces zu skippen.

Neue Protokolle – patch: und portal:

Mit patch: nehmt ihr spezifische Änderungen an Packages innerhalb des Dependency-Trees vor. In Kombination mit dem Resolutions-Field lassen sich auch Pakete patchen, die irgendwo tief im Dependency-Tree verschachtelt sind.

Das portal:-Protokoll ist quasi das Gegenstück zum link:-Protokoll. Das link:-Protokoll könnt ihr nutzen, um Symlinks zu lokalen Ordnern zu erstellen, mit portal: erstellt ihr in Yarn 2 Symlinks zu allen Package-Foldern. Der Unterschied: Portale folgen transitiven Dependencies, Links nicht.

Workspace Contraints

Auch wenn Workspaces ein tolles Feature von Yarn sind – die Aufrechterhaltung synchronisierter Workspace Dependencies ist aufwändig. Yarn 2 kommt mit einem neuen Konzept namens Constraints. Damit könnt ihr allgemein gültige Regeln für eure Workspaces erstellen – mithilfe von Prolog, einer Programmiersprache aus den 70er-Jahren. Klingt kompliziert? – Ist es wohl auch. Im Blogpost auf dev.to kündigte Nison bereits an, dass er dazu in Kürze weitere Infos veröffentlichen wolle.

Genauere Kontrolle über eure Dependencies

In Yarn 2 werden eure Build-Dependencies getrackt. Außerdem könnt ihr Builds für einzelne Packages ermöglichen.

Verbesserte Windows-Shell-Kompatibilität

Windows-Nutzer hatten in der Vergangenheit öfter Probleme mit dem scripts-field. Für bessere Kompatibilität mit allen Betriebssystemen kommt Yarn 2 mit einem rudimentären Shell-Interpreter. Der soll sicherstellen, dass eure Scripts richtig ausgeführt werden, egal auf welchem OS.

Was ist noch neu?

  • Überarbeitete Peer Dependency Links: In Yarn 2 könnt ihr Node über Plug & Play jetzt zwingen, so viele Package-Instanzen wie nötig zu initiieren, um alle Dependencies zu bedienen.
  • Neues Lockfile-Format: Anstelle der YAML-ähnlichen Syntax der Lockfiles in Yarn 1 sind in Yarn 2 sowohl die Lockfiles als auch die Konfigurationsdateien in YAML verfasst. Das dürfte vor allem den Erstellern externer Tools die Arbeit erleichtern.
  • TypeScript Codebase und modulare Architektur: Die Codebase von Yarn2 wurde komplett von Flow zu TypeScript migriert. Für das Schreiben von Plugins bedeutet das mehr Sicherheit, für das Yarn2-Entwicklerteam einen vereinfachten Workflow. Außerdem ermöglicht es das Schreiben von Plugins, die während der Laufzeit geladen werden.
  • Verbesserte Konfigurationspipeline: Die Konfiguration in Yarn 2 wurde komplett überarbeitet – alle Einstellungen findet ihr unter yarnrc.yml. Außerdem wurden deren Benennungen vereinheitlicht, die neuen Namen findet ihr in der Doku.

Was wird aus Yarn 1?

Laut Nisons Blogpost wird Yarn 1 nach der Veröffentlichung von Version 1.22 in den Maintainance-Mode versetzt. Konkret bedeutet das: Er selbst wird keine weiteren Updates an dem Projekt vornehmen, Security-Patches ausgenommen. Neue Features sollen künftig ausschließlich für Yarn 2 entwickelt werden. Das Yarn-1-Repo findet ihr momentan weiterhin unter yarnpkg/yarn, es soll aber – so Nison – nach yarnpkg/legacy verschoben werden. Das Yarn2-Repo ist unter yarnpkg/berry zu finden.

Das Yarn-Package auf npm wird zukünftig mit berry (Yarn 2), respektive legacy (Yarn 1) getaggt. Noch ist das Yarn-1-Package mit latest getaggt, demnächst soll dieser Tag aber zu Yarn 2 wechseln. Nutzer, die nicht zu Yarn 2 migrieren wollen oder können, haben so genug Zeit, ihre Yarn-Versionen zu pinnen. Ab Node 14 – dessen Release im April 2020 erwartet wird – kommt das Node Docker Image wahrscheinlich standardmäßig mit Yarn 2. Wer Yarn 2 vorher schon auf allen Node Images nutzen will, kann das über yarnPath tun. Einige OS-Register, darunter Chocolatey und Homebrew wurden in Yarn 2 bislang noch nicht implementiert – sie werden das Update wahrscheinlich später als andere Register erhalten. Bis dahin könnt ihr Upgrades über yarn set version bzw. yarn policies set-version managen.

Migration zu Yarn 2

Die Migration zu Yarn 2 sollte – vorausgesetzt, ihr nutzt Tools wie Babel, TypeScript, EsLint in jeweils der aktuellsten Version – relativ problemlos verlaufen. Im Migration Guide findet ihr ein HowTo. Aber: Bisher bietet Yarn 2 keine Unterstützung für Flow und React Native. Das dürfte für sehr viele Teams den ausschlaggebenden Grund für einen Verzicht auf das Update darstellen. Auch bei Facebook selbst wird ein Wechsel zu Yarn 2 wohl bislang nicht in Betracht gezogen:

Wer Yarn 2 nur innerhalb mancher Repos nutzen will, kann über den Command yarn policies set-version ^1 festlegen, in welchen Repositiories man bei Yarn1 bleiben will.

t3n meint:

Yarn 1 als Legacy-Version zu betiteln, ist vielleicht ein bisschen verfrüht. Erstens fehlt bei Yarn 2 die Unterstützung für React Native und Flow, und zweitens planen viele Entwickler, unter anderem die Teams bei Facebook, bis auf weiteres bei Version 1 zu bleiben – unter anderem wahrscheinlich eben wegen des fehlenden React- und Flow-Supports.

Kathrin Stoll

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Schreib den ersten Kommentar!
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige