
Problem
NodeJS installieren sollte ja wohl easy sein? Einen Installer runterladen und los geht's? Ja, dann habe ich allerdings nur eine Version, mit welcher ich entwickeln kann. Glück gehabt, wenn alles, woran ich arbeite, mit derselben Version entwickelt und getestet werden muss.
Früher oder später benötigt man parallel eine andere Version oder muss mal in ein altes Repo zurück. NVM ist wohl einigen bekannt, aber hat die Open Source Community auch andere Tools parat?
Lösung
Schaut man in die package.json Dateien bekannter Github Repos wie TypeScript, Lerna oder Lodash, dann ist Volta das Tool der Wahl. Es verspricht, einfach installiert zu sein und schnell und verlässlich mit der NodeJS/NPM Toolchain umgehen zu können.
Das kann ich nach einigen Jahren der Nutzung bestätigen! Die Version 1.0.0 kam im Dezember 2020 raus. Ich habe NVM nie vermisst, da Volta einfacher zu installieren ist und problemlos und schnell seinen Zweck erfüllt.
Beispiel
Installation geht unter Unix auf der Kommandozeile:
curl https://get.volta.sh | bash
Das ist gleichzeitig auch das Kommando, um die Volta-Version upzudaten.
Bezüglich NodeJS-Version hat man die Option, den globalen Default zu setzen:
volta install node@20
Die Default-Version wird automatisch aktiviert und ist unabhängig von Git Repos verfügbar. Innerhalb eines Git Repos gibt es das Konzept des Pinning. Außerhalb des Repos ist der Default aktiv, innerhalb des Repos die gepinnte Version.
So setzt man die NodeJS-Version, mit welcher man in einem Repo arbeiten möchte:
cd customer-foo/repository-bar volta pin node@18.17.0
Dieses Kommando sorgt für einen Eintrag in der package.json, welcher auch eingecheckt wird. Volta sorgt dafür, dass immer, wenn man auf der Kommandozeile in dieses Repo wechselt, auch die entsprechende NodeJS-Version gesetzt wird. Im Vergleich zu NVM spart man sich hier also den Aufruf von nvm use und die Platzierung einer .nvmrc Datei.

- Pro-Tipp: Bevor man mit Volta anfängt, am besten bestehende NodeJS-Installationen entfernen und aus den Shell/Bash/ZSH Configs rausnehmen.
- Getting started
- Das Version-Pinning geht auch für NPM/YARN
- PNPM-Support ist experimental
- Alle Volta-Kommandos sind unter Volta Commands beschrieben.