18 Punkte von xguru 2024-05-13 | 4 Kommentare | Auf WhatsApp teilen
  • 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

 
firea32 2024-05-20

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.

 
halfenif 2024-05-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.

 
surfindia 2024-05-13

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.

 
kroisse 2024-05-13

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.