Facebook, Google und andere haben Yarn vorgestellt — einen alternativen npm-Client, der Probleme mit Geschwindigkeit, Determinismus und Offline-Installation löst. Warum auf Yarn wechseln.
npm-Probleme im Enterprise¶
npm ist der Standard-Package-Manager für Node.js, aber in einer Enterprise-Umgebung stößt er auf Probleme:
- Nicht-Determinismus —
npm installkann unterschiedliche Dependency Trees auf verschiedenen Maschinen erzeugen - Geschwindigkeit — Installation großer Projekte dauert Minuten
- Sicherheit — keine Paket-Integritätsverifizierung
- Offline — Installation erfordert eine Netzwerkverbindung
Yarn löst all diese Probleme.
Lockfile und Determinismus¶
Yarn führt yarn.lock ein — eine automatisch generierte Datei, die identische Dependency Trees sicherstellt:
# Yarn: Der schnelle und zuverlässige Package Manager von Facebook
lodash@^4.17.0:
version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz"
integrity sha1-eCA6TRwyiuHYbcpkYONQ0d9P1cg=
Jede Abhängigkeit hat eine exakte Version, URL und Integritäts-Hash. yarn install auf einem CI-Server liefert ein identisches Ergebnis wie auf der Entwicklermaschine.
Zu dieser Zeit hatte npm kein Lockfile — npm shrinkwrap existierte, aber niemand nutzte es.
Performance und Caching¶
Yarn ist dramatisch schneller als npm:
- Parallele Downloads — Pakete werden gleichzeitig heruntergeladen, nicht sequenziell
- Globaler Cache — ein einmal heruntergeladenes Paket muss nicht erneut geladen werden
- Offline-Installation — funktioniert aus dem Cache ohne Internet
Benchmarks zeigen 2–7-fache Beschleunigung gegenüber npm 3.x. Für CI/CD-Pipelines, bei denen npm install bei jedem Build läuft, ist das eine erhebliche Einsparung.
Migration von npm¶
Der Wechsel zu Yarn ist trivial:
yarnstattnpm installyarn add packagestattnpm install --save packageyarn remove packagestattnpm uninstall packageyarn.lockins Git committen (undnpm-shrinkwrap.jsonlöschen)
Yarn ist kompatibel mit der npm-Registry — es verwendet dieselben Pakete, nur einen anderen Client. Yarn und npm können koexistieren, aber wählen Sie eins pro Projekt.
Fazit: Wettbewerb kommt npm zugute¶
Yarn hat npm zum Verbessern gezwungen — npm 5 wird ein eigenes Lockfile und verbesserte Performance bringen. Gesunder Wettbewerb kommt dem gesamten Ökosystem zugute. Für aktuelle Projekte empfehlen wir Yarn als primären Package Manager.
Brauchen Sie Hilfe bei der Implementierung?
Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.
Kontaktieren Sie uns