Skip to main content

NVM & Node.js Cheat Sheet

📋 Inhaltsverzeichnis

    NVM Installation & Updates Node.js Versionen verwalten NPM verwalten Projekt-Konfiguration LESS verwalten SCSS/SASS verwalten Nützliche Kombinationen

    1. NVM Installation & Updates

    Installation (Linux/macOS)

    # Installation via curl
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
    
    # ODER via wget
    wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
    
    # Nach Installation: Terminal neu starten oder:
    source ~/.bashrc        # für Bash
    source ~/.zshrc         # für Zsh
    

    Installation (Windows)

    # nvm-windows verwenden (separates Projekt)
    # Download: https://github.com/coreybutler/nvm-windows/releases
    
    # Nach Installation via Installer:
    nvm version
    

    NVM aktualisieren

    # Aktuelle Version prüfen
    nvm --version
    
    # Update durch Neuinstallation (neueste Version in URL einsetzen)
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
    
    # Globale Pakete nach Update migrieren
    nvm reinstall-packages <alte-version>
    

    2. Node.js Versionen verwalten

    Verfügbare Versionen anzeigen

    # Alle installierbaren Versionen (sehr lange Liste)
    nvm ls-remote
    
    # Nur LTS-Versionen anzeigen
    nvm ls-remote --lts
    
    # Bestimmte Major-Version filtern
    nvm ls-remote 20              # alle Node 20.x.x Versionen
    nvm ls-remote --lts=iron      # LTS "Iron" (Node 20)
    nvm ls-remote --lts=hydrogen  # LTS "Hydrogen" (Node 18)
    

    Installierte Versionen anzeigen

    # Alle lokalen Installationen
    nvm ls
    nvm list
    
    # Aktuelle aktive Version
    nvm current
    node --version
    

    Node.js installieren

    # Neueste Version installieren
    nvm install node
    
    # Neueste LTS-Version installieren
    nvm install --lts
    
    # Spezifische Version installieren
    nvm install 20.11.0           # exakte Version
    nvm install 20                 # neueste 20.x.x
    nvm install 18.19.0
    
    # Mit Migration globaler Pakete von anderer Version
    nvm install 20 --reinstall-packages-from=18
    
    # Neueste npm-Version gleich mit installieren
    nvm install 20 --latest-npm
    

    Node.js Version wechseln

    # Zu bestimmter Version wechseln (nur aktuelle Shell)
    nvm use 20.11.0
    nvm use 20
    nvm use --lts
    nvm use node                   # neueste installierte
    
    # Standardversion festlegen (für neue Shells)
    nvm alias default 20.11.0
    nvm alias default lts/*
    nvm alias default node
    
    # Temporär andere Version für einen Befehl
    nvm exec 18 node app.js
    nvm exec 18 npm test
    nvm run 18 app.js
    

    Node.js deinstallieren

    # Bestimmte Version entfernen
    nvm uninstall 16.20.0
    
    # Aktuelle Version kann nicht deinstalliert werden
    # Erst wechseln, dann deinstallieren:
    nvm use 20
    nvm uninstall 18
    

    Aliase verwalten

    # Alias erstellen
    nvm alias mein-projekt 18.19.0
    nvm alias stable 20.11.0
    
    # Alias verwenden
    nvm use mein-projekt
    
    # Alias entfernen
    nvm unalias mein-projekt
    
    # Alle Aliase anzeigen
    nvm alias
    

    3. NPM verwalten

    NPM Version prüfen & aktualisieren

    # Aktuelle Version anzeigen
    npm --version
    npm -v
    
    # NPM auf neueste Version aktualisieren
    npm install -g npm@latest
    
    # Bestimmte NPM-Version installieren
    npm install -g npm@10.2.0
    
    # NPM mit Node-Installation aktualisieren
    nvm install-latest-npm
    

    NPM Cache verwalten

    # Cache prüfen
    npm cache verify
    
    # Cache komplett leeren
    npm cache clean --force
    
    # Cache-Pfad anzeigen
    npm config get cache
    

    Globale Pakete verwalten

    # Globale Pakete auflisten
    npm list -g --depth=0
    
    # Global installieren
    npm install -g <paket>
    
    # Global deinstallieren
    npm uninstall -g <paket>
    
    # Veraltete globale Pakete anzeigen
    npm outdated -g
    
    # Alle globalen Pakete aktualisieren
    npm update -g
    

    Lokale Pakete verwalten

    # Abhängigkeiten installieren (aus package.json)
    npm install
    npm i
    
    # Paket als Dependency hinzufügen
    npm install <paket>
    npm install <paket>@version
    
    # Paket als DevDependency hinzufügen
    npm install <paket> --save-dev
    npm install <paket> -D
    
    # Paket entfernen
    npm uninstall <paket>
    
    # Veraltete Pakete anzeigen
    npm outdated
    
    # Alle Pakete aktualisieren (nach semver)
    npm update
    
    # Sicherheitslücken prüfen
    npm audit
    
    # Sicherheitslücken automatisch beheben
    npm audit fix
    npm audit fix --force          # auch breaking changes
    

    package-lock.json

    # Exakte Versionen aus lock-file installieren (CI/CD)
    npm ci
    
    # Lock-file neu generieren
    rm package-lock.json
    npm install
    

    4. Projekt-Konfiguration

    .nvmrc Datei (automatische Node-Version)

    # .nvmrc im Projektroot erstellen
    echo "20.11.0" > .nvmrc
    # ODER
    echo "lts/*" > .nvmrc
    # ODER
    node -v > .nvmrc
    
    # Version aus .nvmrc verwenden
    nvm use
    nvm install    # installiert falls nötig
    

    Automatisches Wechseln (Shell-Konfiguration)

    Für Bash (~/.bashrc):

    # Am Ende der Datei hinzufügen:
    cdnvm() {
        command cd "$@" || return $?
        nvm_path=$(nvm_find_up .nvmrc | tr -d '\n')
        if [[ ! $nvm_path = *[^[:space:]]* ]]; then
            declare default_version;
            default_version=$(nvm version default);
            if [[ $default_version == "N/A" ]]; then
                nvm alias default node;
                default_version=$(nvm version default);
            fi
            if [[ $(nvm current) != "$default_version" ]]; then
                nvm use default;
            fi
        elif [[ -s $nvm_path/.nvmrc && -r $nvm_path/.nvmrc ]]; then
            declare nvm_version
            nvm_version=$(<"$nvm_path"/.nvmrc)
            declare locally_resolved_nvm_version
            locally_resolved_nvm_version=$(nvm ls --no-colors "$nvm_version" | tail -1 | tr -d '\->*' | tr -d '[:space:]')
            if [[ "$locally_resolved_nvm_version" == "N/A" ]]; then
                nvm install "$nvm_version";
            elif [[ $(nvm current) != "$locally_resolved_nvm_version" ]]; then
                nvm use "$nvm_version";
            fi
        fi
    }
    alias cd='cdnvm'
    cdnvm "$PWD"
    

    Für Zsh (~/.zshrc):

    # Automatisches nvm use bei Verzeichniswechsel
    autoload -U add-zsh-hook
    load-nvmrc() {
      local nvmrc_path="$(nvm_find_nvmrc)"
      if [ -n "$nvmrc_path" ]; then
        local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
        if [ "$nvmrc_node_version" = "N/A" ]; then
          nvm install
        elif [ "$nvmrc_node_version" != "$(nvm version)" ]; then
          nvm use
        fi
      elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm version)" != "$(nvm version default)" ]; then
        echo "Reverting to nvm default version"
        nvm use default
      fi
    }
    add-zsh-hook chpwd load-nvmrc
    load-nvmrc
    

    engines in package.json

    {
      "name": "mein-projekt",
      "engines": {
        "node": ">=18.0.0 <21.0.0",
        "npm": ">=9.0.0"
      }
    }
    

    5. LESS verwalten

    Installation

    # Global installieren (CLI überall verfügbar)
    npm install -g less
    
    # Lokal im Projekt (empfohlen)
    npm install less --save-dev
    

    LESS CLI verwenden

    # Basis-Kompilierung
    lessc styles.less styles.css
    
    # Mit Source Maps
    lessc styles.less styles.css --source-map
    
    # Minifiziert (mit clean-css Plugin)
    npm install -g less-plugin-clean-css
    lessc styles.less styles.css --clean-css
    
    # Bestimmte Pfade für @import
    lessc --include-path=node_modules:src/styles styles.less out.css
    
    # Variablen überschreiben
    lessc --modify-var="primary-color=blue" styles.less styles.css
    

    LESS mit npm Scripts

    {
      "scripts": {
        "less:compile": "lessc src/styles/main.less dist/css/styles.css",
        "less:watch": "nodemon --watch src/styles -e less --exec 'npm run less:compile'",
        "less:minify": "lessc src/styles/main.less dist/css/styles.min.css --clean-css"
      },
      "devDependencies": {
        "less": "^4.2.0",
        "less-plugin-clean-css": "^1.5.1",
        "nodemon": "^3.0.0"
      }
    }
    

    LESS mit Build-Tools

    Mit Webpack:

    npm install less less-loader css-loader style-loader --save-dev
    
    // webpack.config.js
    module.exports = {
      module: {
        rules: [
          {
            test: /\.less$/,
            use: [
              'style-loader',
              'css-loader',
              'less-loader'
            ]
          }
        ]
      }
    };
    

    Mit Gulp:

    npm install gulp gulp-less gulp-clean-css gulp-sourcemaps --save-dev
    
    // gulpfile.js
    const gulp = require('gulp');
    const less = require('gulp-less');
    const cleanCSS = require('gulp-clean-css');
    const sourcemaps = require('gulp-sourcemaps');
    
    gulp.task('less', function() {
      return gulp.src('src/styles/**/*.less')
        .pipe(sourcemaps.init())
        .pipe(less())
        .pipe(cleanCSS())
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('dist/css'));
    });
    
    gulp.task('watch', function() {
      gulp.watch('src/styles/**/*.less', gulp.series('less'));
    });
    

    LESS Version aktualisieren

    # Global
    npm update -g less
    
    # Lokal
    npm update less
    
    # Auf neueste Major-Version
    npm install less@latest --save-dev
    

    6. SCSS/SASS verwalten

    Installation

    # Dart Sass (empfohlen, offiziell)
    npm install -g sass
    
    # Lokal im Projekt
    npm install sass --save-dev
    
    # Alternative: node-sass (deprecated, aber noch verwendet)
    npm install node-sass --save-dev
    

    SASS CLI verwenden

    # Basis-Kompilierung
    sass src/styles.scss dist/styles.css
    
    # Mit Source Maps (Standard: an)
    sass src/styles.scss dist/styles.css --source-map
    
    # Ohne Source Maps
    sass src/styles.scss dist/styles.css --no-source-map
    
    # Komprimiert/Minifiziert
    sass src/styles.scss dist/styles.css --style=compressed
    
    # Watch-Modus (einzelne Datei)
    sass --watch src/styles.scss:dist/styles.css
    
    # Watch-Modus (Verzeichnisse)
    sass --watch src/styles:dist/css
    
    # Mehrere Dateien/Verzeichnisse
    sass src/main.scss:dist/main.css src/admin.scss:dist/admin.css
    
    # Load-Path für @use und @import
    sass --load-path=node_modules --load-path=src/styles src/main.scss dist/main.css
    

    SASS mit npm Scripts

    {
      "scripts": {
        "sass:compile": "sass src/scss:dist/css",
        "sass:watch": "sass --watch src/scss:dist/css",
        "sass:prod": "sass src/scss:dist/css --style=compressed --no-source-map",
        "sass:lint": "stylelint 'src/scss/**/*.scss'"
      },
      "devDependencies": {
        "sass": "^1.69.0",
        "stylelint": "^15.11.0",
        "stylelint-config-standard-scss": "^11.0.0"
      }
    }
    

    SASS mit Build-Tools

    Mit Webpack:

    npm install sass sass-loader css-loader style-loader --save-dev
    
    // webpack.config.js
    module.exports = {
      module: {
        rules: [
          {
            test: /\.s[ac]ss$/,
            use: [
              'style-loader',
              'css-loader',
              {
                loader: 'sass-loader',
                options: {
                  // Dart Sass verwenden
                  implementation: require('sass'),
                  sassOptions: {
                    outputStyle: 'compressed',
                  },
                },
              },
            ],
          },
        ],
      },
    };
    

    Mit Vite (modern, empfohlen):

    npm install sass --save-dev
    
    // vite.config.js
    import { defineConfig } from 'vite';
    
    export default defineConfig({
      css: {
        preprocessorOptions: {
          scss: {
            additionalData: `@use "@/styles/variables" as *;`
          }
        }
      }
    });
    

    Mit Gulp:

    npm install gulp gulp-sass sass gulp-clean-css gulp-sourcemaps --save-dev
    
    // gulpfile.js
    const gulp = require('gulp');
    const sass = require('gulp-sass')(require('sass'));
    const cleanCSS = require('gulp-clean-css');
    const sourcemaps = require('gulp-sourcemaps');
    
    gulp.task('sass', function() {
      return gulp.src('src/scss/**/*.scss')
        .pipe(sourcemaps.init())
        .pipe(sass().on('error', sass.logError))
        .pipe(cleanCSS())
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('dist/css'));
    });
    
    gulp.task('watch', function() {
      gulp.watch('src/scss/**/*.scss', gulp.series('sass'));
    });
    

    SASS Linting (Stylelint)

    # Installation
    npm install stylelint stylelint-config-standard-scss --save-dev
    
    // .stylelintrc.json
    {
      "extends": "stylelint-config-standard-scss",
      "rules": {
        "selector-class-pattern": null,
        "scss/dollar-variable-pattern": null
      }
    }
    
    # Ausführen
    npx stylelint "src/scss/**/*.scss"
    npx stylelint "src/scss/**/*.scss" --fix
    

    SASS Version aktualisieren

    # Global
    npm update -g sass
    
    # Lokal
    npm update sass
    
    # Migration von node-sass zu dart-sass
    npm uninstall node-sass
    npm install sass --save-dev
    # Code-Anpassungen: @import → @use/@forward
    

    7. Nützliche Kombinationen

    Komplettes Projekt-Setup

    # 1. Node-Version festlegen
    nvm install 20 --lts
    nvm use 20
    echo "20" > .nvmrc
    
    # 2. Projekt initialisieren
    npm init -y
    
    # 3. SCSS einrichten
    npm install sass --save-dev
    
    # 4. package.json Scripts
    
    {
      "scripts": {
        "dev": "npm run sass:watch",
        "build": "npm run sass:prod",
        "sass:compile": "sass src/scss:dist/css",
        "sass:watch": "sass --watch src/scss:dist/css",
        "sass:prod": "sass src/scss:dist/css --style=compressed --no-source-map"
      }
    }
    

    Globale Pakete bei Node-Update migrieren

    # Aktuelle globale Pakete auflisten (zum Dokumentieren)
    npm list -g --depth=0 > global-packages.txt
    
    # Neue Node-Version mit Paket-Migration
    nvm install 22 --reinstall-packages-from=20
    
    # Oder manuell nach Update
    nvm install 22
    nvm use 22
    npm install -g less sass typescript nodemon
    

    Troubleshooting

    # NVM nicht gefunden nach Installation
    source ~/.bashrc   # oder ~/.zshrc
    
    # Berechtigungsprobleme
    # NVM installiert in $HOME, sollte keine sudo-Rechte brauchen
    
    # node/npm nicht gefunden
    nvm use default
    # oder
    nvm alias default node
    
    # Paket-Konflikte
    rm -rf node_modules package-lock.json
    npm cache clean --force
    npm install
    
    # SASS Kompilierungsfehler nach Update
    npm rebuild sass
    
    # node-gyp Fehler (bei nativen Modulen)
    npm install -g node-gyp
    node-gyp rebuild
    

    📚 Schnellreferenz

    Aufgabe Befehl
    NVM Version nvm --version
    Node installieren nvm install 20
    Node wechseln nvm use 20
    Default setzen nvm alias default 20
    NPM aktualisieren npm install -g npm@latest
    LESS installieren npm install -g less
    SASS installieren npm install -g sass
    LESS kompilieren lessc input.less output.css
    SASS kompilieren sass input.scss output.css
    SASS watch sass --watch src:dist

    Erstellt: Mai 2026 | NVM v0.39.x | Node.js 18-22 | SASS 1.x | LESS 4.x