- 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:
- 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.