JavaScript: Yarn 3.1 überarbeitet die Workspace-Syntax

Der Paketmanager Yarn bringt in Version 3.1 neue Workspace-Optionen und einen experimentellen ECMAScript Modules Loader mit.

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen

(Bild: sommart sombutwanitkul/Shutterstock.com)

Lesezeit: 2 Min.
Von
  • Maika Möbus

Die neue Minor-Version des JavaScript-Paketmanagers Yarn liegt in Version 3.1 vor. Die Alternative zu npm folgt der semantischen Versionierung und hat demnach keine Breaking Changes vorzuweisen. Allerdings passt die neue Version das SDK an, um einen Breaking Change in Visual Studio Code 1.61 und höher zu berücksichtigen.

Yarn 3.1 überarbeitet die Workspace-Syntax und fügt workspace:^ sowie workspace:~ hinzu. Bislang war bereits workspace:* verfügbar, dessen Ranges zur Veröffentlichungszeit mit den entsprechenden Ranges des Ziel-Workspace ersetzt wurden. War jedoch ein Einfügezeichen (Caret, ^) anstatt eines exakten Range gewünscht, war das nur in der Form workspace:^x.y.z möglich, was Yarn im gesamten Repository nach einer Veröffentlichung aktualisierte. Daraus resultierende Merge-Konflikte sollen sich durch die neue Syntax verringern. Das soll vor allem Querverweise in Monorepos vereinfachen, in denen die meisten Pakete zur Veröffentlichung vorgesehen sind.

Als Spezialfall ist die Syntax auch im peerDependencies-Feld zugelassen:

{
  "peerDependencies": {
    "@my/other-package": "workspace:^"
  }
} 

Zudem ist das neue Flag --since hinzugekommen, das sich auf yarn workspaces list und yarn workspaces foreach anwenden lässt. Es führt dazu, dass die Befehle nur auf geänderte Packages im Vergleich zum Main beziehungsweise Master Branch – je nach vorhandenen Branches – angewendet werden. Allerdings beschreibt das Yarn-Team die neue Option als "noch ein wenig experimentell" – vor allem, wenn sie in Verbindung mit -R,--recursive zum Einsatz kommt.

Die neue Yarn-Version hat Node.js – kürzlich in Version 17 erschienen – dank des experimentellen Tools Corepack mit an Bord. Dieses soll dazu dienen, eine Brücke zwischen Node.js und Paketmanagern zu schlagen und unterstützt Yarn und pnp, nicht aber npm.

Experimentell ist in Yarn 3.1 auch die Nutzung von ECMAScript Modules (ESM) mithilfe der noch nicht als stabil geltenden Loader Hook API. Der ESM-Support sollte automatisch aktiviert sein, wenn eines der Packages im Dependence Tree ein "type": "module"-Feld enthält. Er lässt sich zudem in den Einstellungen manuell aktivieren oder deaktivieren (pnpEnableEsmLoader: true).

Alle Neuerungen in Yarn 3.1 sind einem dev.to-Beitrag sowie dem Changelog auf GitHub zu entnehmen.

(mai)