- Wichtige Vergleichskriterien: Cross-Platform, Ersteinrichtung, Quelle der Node-Versionen, tägliche Nutzung
Node Version Manager (NVM)
- Mit 75,2k GitHub-Stars die beliebteste Lösung zur Verwaltung von Node-Versionen
- Früh erschienen und in der Community sehr beliebt geworden
- Keine vollständige Windows-Unterstützung; funktioniert jedoch in GitBash, Cygwin, WSL usw.
- Es gibt zwar ein separates Paket für Windows,
nvm-windows, doch das ist nicht NVM selbst
- Unterstützt nur POSIX-Shells (
bash, zsh), sodass Nutzer von Fish und ähnlichen Shells außen vor bleiben
- Die Installation ist mit einem einfachen Befehl möglich
- Kann über die Datei
.nvmrc erkennen, welche Node.js-Version verwendet werden soll
- Der Befehl
nvm use setzt die Node.js-Version nur für die aktuelle Shell, sodass die Version auch nach dem Verlassen des Projektordners bestehen bleibt
- Dadurch muss man sich ständig bewusst sein, welche Node.js-Version in der aktuellen Shell aktiv ist und welche das Projekt benötigt
- Besser, als alle Node.js-Versionen manuell zu verwalten, aber von perfekter Integration noch entfernt
N
- Ein beliebter Node.js-Versionsmanager mit 18,5k GitHub-Stars
- Nicht plattformübergreifend und mit noch mehr Einschränkungen als NVM
- Läuft nicht in nativen Windows-Shells, Git for Windows Bash oder mit der Cygwin-DLL
- Kann direkt über NPM oder Brew installiert werden oder durch Herunterladen eines
sh-Skripts
- Kann die Node-Version direkt im Abschnitt
"engines" von package.json erkennen
- Es bleibt das Problem, dass man selbst nachverfolgen muss, welche genaue Node.js-Version in anderen Projekten verwendet werden soll
- Verwaltet eine „globale“ Node.js-Version, sodass nach dem Schließen der Shell die im letzten Projekt verwendete Node-Version erhalten bleibt
Fast Node Manager (FNM)
- Ein in Rust geschriebener Node-Versionsmanager mit 15,2k GitHub-Stars
- Der erste plattformübergreifende Node-Versionsmanager in dieser Liste
- Läuft unter Windows ohne zusätzliche Paketinstallationen
- Der Installationsprozess ist klar und intuitiv
- Verwaltet Node.js-Versionen pro Shell und verwendet eine „Standard“-Version, wenn für ein Projekt keine Version festgelegt ist
- Bietet eine automatische Umschaltung der Node.js-Version anhand des Ordners, benötigt dafür aber Konfiguration
- Damit die automatische Umschaltung korrekt funktioniert, müssen die benötigten Node.js-Versionen vorab installiert sein
- Kann Node-Versionen nur aus
.node-version- oder .nvmrc-Dateien erkennen
Volta
- Mit 10k GitHub-Stars ein Rising Star unter den Versionsmanagern
- In Rust geschrieben und plattformübergreifend
- Reibungsloser Installationsprozess auf Unix-basierten Systemen
- Beim Festlegen der Node.js-Version sind keine zusätzlichen Dateien nötig
- Übernimmt die Konfiguration direkt aus
package.json
- Der Abschnitt
"engines" steht direkt neben der Volta-Konfiguration, wodurch sich Versionen leicht synchronisieren lassen
- Kann Toolchains verwalten und nicht nur Node.js-Versionen, sondern auch Yarn-Versionen dynamisch umschalten
- Stellt bei jedem Ausführen eines Installationsbefehls sicher, dass Node.js- und Yarn-Versionen den deklarierten Vorgaben entsprechen
PNPM
- Wird meist als Alternative zu NPM oder Yarn gesehen, kann aber auch Node.js-Versionen verwalten
- Plattformübergreifend und bietet auf allen Plattformen dasselbe Erlebnis bei der Verwaltung von Node.js-Versionen
- Da Node-Versionsverwaltung keine Kernfunktion ist, ist die gemeinsame Nutzung mit NPM oder Yarn schwierig
- Mit PNPM installierte Node.js-Versionen enthalten kein Corepack
- Kann Node.js-Versionen nur global verwalten und nicht pro Shell festlegen
- Wechselt die Node.js-Version beim Wechsel zwischen Projekten nicht dynamisch, sodass man selbst den Überblick behalten muss
Fazit
- Node.js-Versionsmanager haben sich stark weiterentwickelt
- NVM war die älteste und beliebteste Lösung und ist es weiterhin
- Doch das Ökosystem entwickelt sich weiter, und verschiedene Tools wie N, FNM und Volta sind hinzugekommen
- Derzeit wirkt Volta wie der funktionsreichste und vollständigste Node.js-Versionsmanager
- Volta ist plattformübergreifend, bietet im Alltag ein reibungsloses Nutzungserlebnis und verwaltet sogar weitere im Projekt verwendete Tools
4 Kommentare
Es ist mir zu umständlich, extra zu lernen, wie man das als separates Paket verwaltet, deshalb nutze ich einfach
brew unlink && brew link node@14.Es gibt einfach von allem zu viel, sodass der Wille, es ernsthaft zu lernen, nur noch „schwach“ ist.
Wenn ich daran denke, wie ich früher bei FileForge nach Windows-Executables gewühlt habe, frage ich mich schon, ob es wirklich so bequem sein darf.
Von einem Versionsmanager erwarte ich weniger Leistung als vielmehr Vielseitigkeit. In dieser Hinsicht nutze ich https://github.com/asdf-vm/asdf sehr zufrieden. Je nach Plugin lassen sich damit nicht nur Node, sondern auch Python, Ruby, Golang usw. verwalten. Das
direnv-Plugin nutze ich ebenfalls gern.Nodenv ist ebenfalls eine ziemlich gute Alternative, daher ist es schade, dass es nicht erwähnt wurde. Mit 2,2k GitHub-Stars wurde es vermutlich ausgeschlossen, weil es als nicht besonders bekannt gilt.
Da es auf Shell-Skripten basiert, ist die Windows-Kompatibilität ähnlich eingeschränkt wie bei NVM oder N. Dafür kann man unabhängig von der globalen Node.js-Version auch ordnerbasiert eine Node.js-Version festlegen oder eine neue Shell-Umgebung starten, die eine bestimmte Node.js-Version verwendet.