Parallelisierung verschiedener Node.js Versionen mit NVM
Ein Nachteil in der Arbeit mit Node.js ist, dass nur eine Version zur selben Zeit auf einem System installiert sein kann. Ältere Projekte benötigen eine ältere Version, wohin gegen neue Projekte mit einer aktuellen Version entwickelt werden.
Verschiedene Versionen werden auch benötigt, wenn man prüfen möchte, ob eine Anwendung abwärtskompatibel ist. Aus diesen und weiteren Gründen muss immer zwischen verschiedenen Versionen gewechselt werden.
Quelle: Wiki
Node Version Manager – NVM
Für das oben genannte Problem gibt es bereits verschiedene GitHub Projekte, jedoch werden viele davon nicht mehr gepflegt (siehe: nodist oder nvmw ). Eine aktiv gepflegtes GitHub Projekt für Mac und Linux ist https://github.com/nvm-sh/nvm .
Für uns relevant ist jedoch ein Tool unter Windows, welches noch aktiv gepflegt wird. Dabei ist die Auswahl relativ gering. Ein Projekt, was sich hierzu noch anbietet, ist Node Version Manager for Windows: https://github.com/coreybutler/nvm-windows
Zur Installation des NVM müssen Adminrechte vorhanden sein. Auch für einige Befehle, wie beim installieren weiterer Node.js Versionen oder dem Wechseln zwischen den Versionen sind diese nötig.
Der Hintergrund, weshalb Administratorrechte benötigt werden, ist, dass Node.js einen Symlink bei der Installation einer neuen Node.js Version hinterlegt. Dieser wird unter anderem benötigt, um die CLI-Befehle mit Node.js zu ermöglichen. Bei einem Wechsel zwischen verschiedenen Versionen muss dieser Symlink angepasst werden. Das Ändern eines Symlinks ist jedoch nur mit Administratorrechten möglich.
Installation
Bei der Installation müssen einige Punkte beachtet werden:
- Bevor NVM installiert wird, müssen alle zuvor installieren Node.js Versionen deinstalliert werden, da es sonst zu Konflikten kommt.
- Herunterladen und ausführen des Installers: https://github.com/coreybutler/nvm-windows/releases
- Bei der Auswahl des Installationspfad darauf achten, dass die Anwendung NICHT unter dem Admin User Verzeichnis gespeichert wird („adm.<user>“). Ansonsten lässt sich Node.js nur noch über eine Admin Konsole ausführen.
- Nach der Installation muss unter dem Verzeichnis C:\Users\<user>\ ein neuer Ordner mit dem Namen „nvm“ angelegt werden
-
In diesem neuen Verzeichnis C:\Users\<user>\nvm muss nun eine txt Datei angelegt werden mit dem Namen „settings.txt“ und dessen Inhalt:
root: C:\Users\<user>\AppData\Roaming\nvm
path: C:\Program Files\nodejs
arch:
64
proxy: none
Beschreibung der Parameter
-
root: This is the installation directory where the files were extracted (
NVM_HOME
). -
path: This is the symlink directory defined in
NVM_SYMLINK
. -
proxy: Set this to „none“. If you need to use a proxy, it can be modified using nvm from the command line.
-
arch: This should be
32
or64
based on whether Windows is running as a 32-bit or 64-bit application.
Weitere Infos dazu: https://github.com/coreybutler/nvm-windows/wiki#manual-installation
-
-
Damit die Änderungen wirksam werden, muss der Rechner neu gestartet werden.
- Für die Verwendung des NVM muss ein Terminal Fenster mit Adminrechten gestartet werden
-
Die nötigen Node.js Versionen installieren. Nach jeder Installation müssen globale utilities (z.B. yarn) noch mal installiert werden:
z.B.:
nvm install
11.15
.
0
npm install -g yarn
nvm install
14.15
.
4
npm install -g yarn
-
Wähle die gewünschte Node.js Version. Bei einem Wechsel zu einer anderen Version ist der Vorgang genau gleich
z.B.:
nvm use
14.15
.
4
Nun ist Node.js bereit und kann auch in einem Terminal Fenster ohne Adminrechte verwendet werden. Noch mal der Hinweis: Möchte man weitere Node.js Versionen installieren oder die Version wechseln, ist ein Terminalfenster mit Adminrechten nötig.
Fazit
Node.js Versionen sind etwas, woran selten gedacht wird, bis sie während der Entwicklung zu einem Problem führen. Wenn ihr eines der oben genannte Probleme habt, müsst ihr zwangsläufig zwischen verschiedenen Versionen wechseln. Mit dem Node Version Manager ist es relativ einfach, per Kommandozeile zwischen verschiedenen Version zu wechseln. Dadurch vereinfacht bzw. verbessert sich die Entwicklung und Workflow im Allgemeinen.