# nvm — Node.js-Versionen verwalten

> Praxis-Guide zu nvm: mehrere Node.js-Versionen pro Shell und Projekt installieren, wechseln und per .nvmrc pinnen.

Source: https://www.jpkc.com/db/cheatsheets/package-managers/nvm/

<!-- PROSE:intro -->
nvm (Node Version Manager) verwaltet beliebig viele Node.js-Versionen parallel auf deinem System und lässt dich pro Shell oder pro Projekt zwischen ihnen umschalten. Statt eine global installierte Node-Version zu überschreiben, hältst du etwa Node 18 für ein Altprojekt und Node 22 für ein neues nebeneinander vorrätig. Mit einer `.nvmrc`-Datei pinnst du die passende Version direkt ins Projekt, sodass alle im Team automatisch dasselbe Node verwenden. Wichtig zu wissen: nvm ist kein Binary, sondern eine Shell-Funktion, die beim Start aus deiner `.bashrc` oder `.zshrc` geladen wird – darum wirkt `nvm use` immer nur in der aktuellen Shell.
<!-- PROSE:intro:end -->

## Installieren & Versionen auflisten

`nvm install <version>` — Installiert eine bestimmte Node.js-Version.

```bash
nvm install 20
```

`nvm install --lts` — Installiert die neueste LTS-Version (Long-Term Support).

```bash
nvm install --lts
```

`nvm install node` — Installiert die neueste aktuelle Version.

```bash
nvm install node
```

`nvm ls` — Listet alle lokal installierten Versionen auf.

```bash
nvm ls
```

`nvm ls-remote` — Listet alle zur Installation verfügbaren Versionen auf.

```bash
nvm ls-remote
```

`nvm ls-remote --lts` — Listet nur die verfügbaren LTS-Versionen auf.

```bash
nvm ls-remote --lts
```

`nvm uninstall <version>` — Deinstalliert eine bestimmte Node.js-Version.

```bash
nvm uninstall 18
```

## Versionen wechseln

`nvm use <version>` — Wechselt zu einer bestimmten installierten Version.

```bash
nvm use 20
```

`nvm use --lts` — Wechselt zur neuesten installierten LTS-Version.

```bash
nvm use --lts
```

`nvm use node` — Wechselt zur neuesten installierten Version.

```bash
nvm use node
```

`nvm use system` — Wechselt zum systemweit installierten Node.js.

```bash
nvm use system
```

`nvm current` — Zeigt die aktuell aktive Node.js-Version an.

```bash
nvm current
```

## Aliasse & Standardwerte

`nvm alias default <version>` — Legt die Standardversion für neue Shells fest.

```bash
nvm alias default 20
```

`nvm alias default lts/*` — Setzt die neueste LTS-Version als Standard.

```bash
nvm alias default lts/*
```

`nvm alias <name> <version>` — Erstellt einen eigenen Alias für eine Version.

```bash
nvm alias project-a 18.19.0
```

`nvm unalias <name>` — Entfernt einen eigenen Alias.

```bash
nvm unalias project-a
```

## .nvmrc & automatisches Umschalten

`echo '<version>' > .nvmrc` — Legt eine .nvmrc-Datei an, um die Node-Version für ein Projekt zu pinnen.

```bash
echo '20' > .nvmrc
```

`nvm use` — Liest die .nvmrc und wechselt zur dort angegebenen Version (automatisch erkannt).

```bash
nvm use
```

`nvm install` — Installiert die in .nvmrc angegebene Version, falls sie noch fehlt.

```bash
nvm install
```

## Werkzeuge

`nvm which <version>` — Zeigt den Pfad zum Binary einer Node.js-Version an.

```bash
nvm which 20
```

`nvm exec <version> <command>` — Führt einen Befehl mit einer bestimmten Node-Version aus.

```bash
nvm exec 18 node -v
```

`nvm run <version> <script>` — Führt ein Skript mit einer bestimmten Node-Version aus.

```bash
nvm run 20 app.js
```

`nvm reinstall-packages <version>` — Installiert globale npm-Pakete aus einer anderen Version neu.

```bash
nvm reinstall-packages 18
```

`nvm cache clear` — Leert den nvm-Download-Cache.

```bash
nvm cache clear
```

`nvm --version` — Zeigt die installierte nvm-Version an.

```bash
nvm --version
```

<!-- PROSE:outro -->
## Fazit

nvm nimmt dir den Schmerz, Node.js-Versionen von Hand zu jonglieren: Du installierst sie nebeneinander, pinnst pro Projekt eine `.nvmrc` und wechselst mit einem einzigen `nvm use`. Behalte im Kopf, dass jede Node-Version ihre **eigenen** global installierten Pakete hat – nach einem Versionswechsel fehlen dir global installierte CLIs daher zunächst; `nvm reinstall-packages` hilft beim Übernehmen. Die offizielle Installation läuft über ein `curl … | bash`-Skript: Solche Pipe-to-Shell-Befehle solltest du grundsätzlich nicht blind ausführen, sondern das Skript vorher ansehen oder gepinnt einbinden. Da nvm eine Shell-Funktion ist und kein Binary, wirkt es nur in Shells, in denen es aus `.bashrc`/`.zshrc` geladen wurde – in Cron-Jobs oder CI greift es ohne explizites Sourcing nicht.

## Weiterführende Links

- [nvm – GitHub-Projekt](https://github.com/nvm-sh/nvm) – Quellcode, Installation und vollständige Dokumentation (englisch)
- [Node.js – Versionen & Releases](https://nodejs.org/de/about/previous-releases) – LTS-Zeitplan und unterstützte Node-Versionen
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [apk](https://www.jpkc.com/db/cheatsheets/package-managers/apk/) – Paketmanager von Alpine Linux
- [apt](https://www.jpkc.com/db/cheatsheets/package-managers/apt/) – komfortables Paket-Frontend für Debian/Ubuntu
- [apt-get](https://www.jpkc.com/db/cheatsheets/package-managers/apt-get/) – klassisches Paketwerkzeug für Debian/Ubuntu

