yarn: Wesen, alternativer Paketmanager für React Native

Autor: IT Sectr Veröffentlicht: 2026-02-13 Lesezeit: 10 Min.

yarn — ein alternativer Paketmanager für Node.js, entwickelt von Facebook zusammen mit Exponent, Google und Tilde im Jahr 2016. yarn löste die Geschwindigkeits- und Sicherheitsprobleme von npm 2-4: parallele Installation, strenge Lock-Datei und Offline-Cache. Heute ist yarn weiterhin beliebt in React Native, Expo und Monorepos. Erfahren Sie mehr auf yarn Documentation.

Wichtige Punkte

  • yarn — ein Paketmanager für Node.js, entwickelt von Facebook im Jahr 2016 zur Lösung von npm-Problemen
  • yarn.lock — eine Lock-Datei, die genaue Versionen aller Abhängigkeiten aufzeichnet, automatisch generiert
  • yarn install — parallele Paketinstallation mit globalem Cache ohne Duplizierung
  • yarn workspaces — ein Mechanismus zur Verwaltung von Monorepos mit gemeinsamem node_modules-Ordner
  • Plug'n'Play — eine Alternative zu node_modules, die Pakete in ZIP-Archiven in einem globalen Cache speichert

Was ist yarn — ein Paketmanager?

yarn (Yet Another Resource Negotiator) wurde im Oktober 2016 als Antwort von Facebook auf die Probleme von npm 2-4 veröffentlicht: langsame Installation, fehlende Lock-Datei und unsichere Pakete. yarn führte parallele Paketdownloads, deterministisches yarn.lock und Integritätsprüfung durch Prüfsummen ein. Im Jahr 2020 wechselte yarn zu Version 2 (Berry) mit Plug'n'Play und TypeScript-First-Ansatz.

Die Architektur von yarn unterscheidet sich von npm: yarn lädt Pakete parallel herunter (npm vor Version 5 — sequenziell), speichert jedes Paket in ~/.cache/yarn ohne Duplizierung zwischen Projekten und überprüft die Integrität über Prüfsummen. yarn generiert bei jeder Installation immer yarn.lock, während package-lock.json in npm erst in Version 5 erschien.

Ab yarn 2 (Berry, 2020) wurde yarn vollständig in TypeScript neu geschrieben und unterstützt Plug'n'Play, Workspaces, Constraints für Monorepos und Installationsprotokolle aus verschiedenen Quellen (npm, git, tarball). yarn 3+ (2022) führte Zero-Installs ein — Speichern des Caches im Repository für sofortige Installation ohne Netzwerkzugriff.

Wie yarn die Abhängigkeitsinstallation verwaltet

yarn install — der Hauptbefehl, der package.json und yarn.lock liest und Abhängigkeiten installiert. yarn lädt Pakete parallel herunter, was die Installation im Vergleich zu npm 4 und früheren Versionen um das 2-3-fache beschleunigt. yarn verwendet einen Offline-Cache: Wenn ein Paket bereits in einem anderen Projekt heruntergeladen wurde, wird es aus dem Cache kopiert, anstatt erneut heruntergeladen zu werden.

bash
# Grundlegende yarn-Befehle
$ yarn install
$ yarn add react-native-webview
$ yarn add --dev typescript
$ yarn global add expo-cli
# Interaktive Aktualisierung
$ yarn upgrade-interactive
# Doppelte Pakete entfernen
$ yarn dedupe

yarn add — der Befehl zum Installieren eines neuen Pakets. yarn add <package> fügt zu dependencies hinzu, yarn add --dev — zu devDependencies. yarn aktualisiert automatisch yarn.lock. yarn upgrade aktualisiert Pakete auf die neuesten Versionen innerhalb des semantischen Bereichs. yarn upgrade-interactive — ein interaktiver Modus zur Auswahl bestimmter Pakete für die Aktualisierung.

yarn cache — ein globaler Cache in ~/.cache/yarn/v6. Jedes Paket wird einmal in einem ZIP-Archiv mit einer Prüfsumme gespeichert. Der yarn-Cache wird automatisch bereinigt, aber Sie können yarn cache clean manuell ausführen. yarn cache dir zeigt den Cache-Pfad an. yarn cache list — listet zwischengespeicherte Pakete auf.

yarn.lock: Zweck und Dateistruktur

yarn.lock — eine Lock-Datei, die genaue Versionen aller Abhängigkeiten und ihrer transitiven Pakete aufzeichnet. Anders als package-lock.json (JSON) verwendet yarn.lock ein YAML-Format mit flacher Struktur. yarn.lock wird immer automatisch bei yarn install oder yarn add generiert — dies stellt sicher, dass alle Entwickler und CI-Server ein identisches Paketset erhalten.

yaml
# Beispiel einer yarn.lock-Struktur
react@^18.3.0:
  version: "18.3.1"
  resolution: "react@npm:18.3.1"
  dependencies:
    loose-envify: "^1.1.0"
  checksum: "abc123def456..."

react-native@^0.76.0:
  version: "0.76.3"
  resolution: "react-native@npm:0.76.3"
  dependencies:
    react: "18.3.1"
  checksum: "def789ghi012..."

yarn.lock-Felder: version — genaue Paketversion, resolution — Quelle und Version, dependencies — seine Abhängigkeiten, checksum — Prüfsumme zur Überprüfung. yarn.lock wird ins Repository committet und ist die einzige Quelle der Wahrheit für Abhängigkeiten. Wenn yarn.lock und package.json voneinander abweichen, gibt yarn eine Warnung aus.

Yarn Constraints — ein Regelsystem für Monorepos, das Abhängigkeitsversionen in yarn.lock überprüft und erzwingt. Constraints werden in der Datei yarn.constraints.js mit der Yarn Constraint Language beschrieben. Constraints ermöglichen sicherzustellen, dass alle Pakete in einem Monorepo dieselbe Version von React oder TypeScript verwenden.

yarn im React Native-Ökosystem

React Native war traditionell eng mit yarn verbunden. Expo CLI, React Native CLI und Create React Native App verwendeten anfänglich yarn. In React Native-Projekten fixiert yarn.lock die Versionen nativer Module, was für eine stabile Kompilierung über CocoaPods (iOS) und Gradle (Android) entscheidend wichtig ist. yarn workspaces sind in React Native-Monorepos mit gemeinsamem Code beliebt.

yarn workspaces in React Native-Monorepos: Die root package.json enthält "workspaces": ["packages/*", "mobile"]. yarn install erstellt einen einzigen node_modules-Ordner auf der Root-Ebene. Pakete verweisen über Symlinks aufeinander. npx pod-install wird nach Änderungen an nativen Abhängigkeiten ausgeführt, um CocoaPods zu aktualisieren.

json
{
  "private": true,
  "workspaces": [
    "packages/*",
    "apps/mobile",
    "apps/web"
  ],
  "scripts": {
    "mobile:start": "yarn workspace mobile start",
    "mobile:ios": "yarn workspace mobile ios",
    "lint": "yarn workspaces run lint"
  }
}

Expo SDK 50+ empfiehlt offiziell yarn für neue Projekte, die über npx create-expo-app erstellt wurden. yarn gewährleistet Kompatibilität mit Expo-Modulen und generiert automatisch die richtige yarn.lock. Zero-Installs in yarn 3+ ermöglicht das Committen des Caches ins Repository — Entwickler erhalten eine gebrauchsfertige Umgebung ohne Installation von Abhängigkeiten nach git clone.

yarn und npm: eine vergleichende Analyse

npm und yarn lösen dasselbe Problem — die Verwaltung von Node.js-Paketen. Mit der Veröffentlichung von npm 5-7 ist die funktionale Lücke praktisch verschwunden. npm 7+ enthält Workspaces, npm ci (äquivalent zu yarn install --frozen-lockfile) und parallele Installation. Allerdings behält yarn Vorteile in spezifischen Szenarien: Plug'n'Play, Zero-Installs und ein ausgereiftes Constraints-System.

Merkmalnpmyarn
Entstehungsjahr20102016
Lock-Dateipackage-lock.json (JSON)yarn.lock (YAML)
InstallationSequenziell (npm 5+)Parallel
Plug'n'PlayNeinJa (yarn 2+)
WorkspacesJa (npm 7+)Ja
Zero-InstallsNeinJa (yarn 3+)
Cachenode_modules mit FlatteningGlobal ~/.cache/yarn
ImplementierungsspracheJavaScriptTypeScript (yarn 2+)

Wann yarn wählen: Projekte auf Expo SDK 50+, große Monorepos (100+ Pakete), Teams, die Zero-Installs für schnelle Umgebungseinrichtung schätzen, und Legacy-Projekte, die bereits yarn verwenden. Wann npm wählen: Standard-create-react-app-Projekte, Next.js, Vite, Teams ohne spezifische Paketmanager-Anforderungen.

yarn 4 (2024) führte verbesserte Leistung, native ESM-Unterstützung und Optimierung für große Monorepos ein. npm 10+ entwickelt sich mit Fokus auf Sicherheit und Kompatibilität weiter. Die Wahl zwischen npm und yarn ist heute eine Frage der Teampräferenzen und spezifischen Projektanforderungen, nicht der technischen Überlegenheit eines Tools über das andere.

Häufig gestellte Fragen

Was ist der Hauptunterschied zwischen yarn und npm?

yarn übertraf npm anfangs in der Geschwindigkeit dank paralleler Paketinstallation und aggressivem Caching. yarn.lock wird bei jeder Installation automatisch generiert, während package-lock.json in npm 5 erschien. yarn bietet Plug'n'Play — eine Alternative zu node_modules mit null Installationszeit. Mit npm 7+ ist der Unterschied in Geschwindigkeit und Funktionalität für Basisszenarien minimal.

Wie funktionieren yarn workspaces in Monorepos?

yarn workspaces — ein Mechanismus zur Verwaltung mehrerer Pakete in einem einzigen Repository. Die root package.json enthält das Feld "workspaces": ["packages/*"]. yarn install installiert gemeinsame Abhängigkeiten auf oberster Ebene in einem einzigen node_modules, erstellt Symlinks zwischen lokalen Paketen und vermeidet Duplizierung. Befehle werden für alle Workspaces über yarn workspaces run <script> ausgeführt.

Was ist yarn Plug'n'Play und wofür wird es benötigt?

Plug'n'Play (PnP) — eine Alternative zum traditionellen node_modules-Ordner, eingeführt in yarn 2. Anstatt Dateien zu kopieren, erstellt yarn eine Abhängigkeitskarte in .pnp.cjs und speichert Pakete in ZIP-Archiven in einem globalen Cache. PnP-Vorteile: Installation in Sekunden, Node.js-Startzeit um 30-50% reduziert, kein node_modules und damit verbundene Pfadprobleme.

Wie migriert man ein Projekt von npm zu yarn?

Installieren Sie yarn global: npm install -g yarn. Führen Sie im Projektstammverzeichnis yarn import aus — yarn liest package-lock.json und erstellt ein äquivalentes yarn.lock. Löschen Sie node_modules und package-lock.json, führen Sie yarn install zur Überprüfung aus. Aktualisieren Sie die CI/CD-Konfiguration, indem Sie npm durch yarn ersetzen. yarn ist vollständig kompatibel mit package.json.

Wie behebt man Versionssperrfehler in yarn?

Der Fehler "Integrity check failed" tritt auf, wenn yarn.lock und node_modules nicht synchron sind. Lösung: Löschen Sie node_modules, yarn.lock und leeren Sie den Cache (yarn cache clean), führen Sie dann yarn install erneut aus. Bei Versionskonflikten verwenden Sie yarn upgrade-interactive, um bestimmte Updates auszuwählen. yarn dedupe entfernt doppelte Pakete.

Zusammenfassung

  • yarn — ein alternativer Node.js-Paketmanager, entwickelt von Facebook im Jahr 2016
  • yarn.lock — eine Lock-Datei, die genaue Versionen aller Abhängigkeiten im YAML-Format aufzeichnet
  • yarn install — parallele Paketinstallation mit globalem Offline-Cache
  • Plug'n'Play — ein innovativer yarn 2+-Mechanismus ohne node_modules-Ordner
  • yarn workspaces — Monorepo-Verwaltung mit einem einzigen node_modules
  • yarn in React Native — der Standard-Paketmanager für Expo und React Native-Projekte
  • Zero-Installs — Committen des Caches ins Repository für sofortige Installation ohne Herunterladen von Paketen

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch