4 Punkte von GN⁺ 2025-03-26 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Das Technical Steering Committee (TSC) von Node.js hat per offizieller Abstimmung beschlossen, Corepack nicht länger als Bestandteil von Node.js mit auszuliefern
  • Dies gilt ab Node.js 25; in Node.js 24 und früher wird es weiterhin als experimentelle Funktion bereitgestellt

Rolle und Grenzen von Corepack

  • Corepack ist ein experimentelles Tool, das in Node.js 16.9.0 eingeführt wurde und die Nutzung von Paketmanagern wie Yarn und pnpm ohne separate Installation ermöglicht
  • Es dient dazu, in Projekten eine bestimmte Version des Paketmanagers verbindlich vorzugeben
  • Aufgrund geringer Bekanntheit und Missverständnissen über seinen Zweck wurde es jedoch nicht breit genutzt
  • Zudem gibt es Skepsis gegenüber der Einbindung von Paketmanagern in Node.js, obwohl sie unabhängig von der Runtime funktionieren sollten

Der Weg bis zur Entfernung von Corepack

  • Die Diskussion über die Zukunft von Corepack läuft bereits seit mehreren Jahren; im November 2023 sorgte ein Vorschlag zur standardmäßigen Aktivierung für Kontroversen
  • Im Februar 2024 wurden Bedenken geäußert, dass Corepack als Mittel genutzt werden könnte, um die Kopplung von npm und Node.js aufzulösen
  • Im März 2024 wurde klargestellt, dass npm weiterhin mit Node.js ausgeliefert wird, gleichzeitig rückte jedoch die mögliche Entfernung von Corepack in den Fokus
  • Das TSC delegierte die entsprechende Entscheidung an die Package Maintenance Working Group (PMWG)
  • Die PMWG legte folgende Roadmap für die Entfernung vor:
    • Auf der Node.js-Download-Seite sollen Versionsverwaltungstools wie nvm und fnm stärker hervorgehoben werden
    • Die Corepack-Dokumentation soll aus der Node.js-API-Dokumentation herausgelöst und in ein separates Repository verschoben werden
    • Ab dem nächsten Major Release soll Corepack aus den Node.js-Distributionen entfernt werden
  • Diese Roadmap erhielt innerhalb der PMWG starke Unterstützung und führte zur abschließenden Abstimmung

Gründe für die Entscheidung zur Entfernung von Corepack

  • Geringe Verbreitung: Viele Entwickler installieren und verwenden ihren bevorzugten Paketmanager direkt, statt Corepack zu nutzen
  • Bedenken zur Distribution: Es gibt die Ansicht, dass die Aufnahme von Corepack in das Node.js-Binary selbst unnötig ist
  • Fragen der langfristigen Wartung: Wenn Corepack von Node.js getrennt wird, können sich Paketmanager unabhängiger weiterentwickeln
  • Das Abstimmungsergebnis fiel zugunsten des Vorschlags einer „schrittweisen zukünftigen Entfernung“ aus
  • Andere Vorschläge, etwa die standardmäßige Deaktivierung beizubehalten, erhielten nicht genügend Unterstützung
  • Einige Entwickler bewerten die Entscheidung als Rückschritt, da sie Corepack anstelle von npm genutzt haben, um pnpm einzusetzen
  • Seitens Node.js wurde betont, dass Corepack nie als dauerhaftes Feature gedacht war und eine getrennte Pflege vorzuziehen sei

Was sich künftig ändert

  • Künftig wird Corepack nicht mehr standardmäßig in Node.js enthalten sein
  • Bei Bedarf muss es manuell mit folgendem Befehl installiert werden:
    • npm install -g corepack
  • Projekte, die Corepack nutzen, müssen ihre Dokumentation und Workflows aktualisieren
  • Diese Entscheidung bedeutet jedoch nicht das Ende des Supports für Corepack, sondern lediglich dessen Entfernung aus Node.js
  • Die Wartung von Corepack wird fortgesetzt, bis Node.js 24.x EOL erreicht

Der historische Kontext von Node.js und Paketmanagern

  • Schon in der Vergangenheit gab es Debatten darüber, welche Bestandteile in Node.js enthalten sein sollten; dazu gehörte auch die Frage, ob npm mitgeliefert werden sollte
  • Mit dem Aufkommen alternativer Paketmanager wie Yarn und pnpm entstanden verschiedene Wahlmöglichkeiten
  • Die Entfernung von Corepack ist Teil einer Bewegung, die Node.js-Distributionen schlanker machen soll
  • Dies entspricht auch dem Trend in anderen Sprachökosystemen, Runtime und Paketmanager voneinander zu trennen
  • Entwickler sollten ihre Entwicklungsumgebungen darauf vorbereiten, dass Corepack künftig nicht mehr in Node.js enthalten ist

Noch keine Kommentare.

Noch keine Kommentare.