NVM

Table of contents

  1. Installing NVM (Node Version Manager)
    1. NVM On macOS
    2. NVM On Ubuntu/Linux/macOS
    3. Windows:
  2. NVM Commands
    1. Install the latest LTS version
    2. Install a specific Node.js version. nvm install <version>
    3. Use a specific Node.js version. nvm use <version>
    4. Uninstall a specific Node.js version. nvm uninstall <version>
    5. List installed Node.js versions.
    6. List available Node.js versions that can be installed.
    7. Display the currently active Node.js version.
    8. Create an alias for a specific Node.js version. nvm alias <name> <version>
    9. Use the default Node.js version set by an alias.
    10. Display the path to a specific Node.js version. nvm which <version>
    11. Display the current NVM version.
    12. Display the current NVM version (alternative command)
    13. Reinstall or migrate from older node versions to lts.
  3. NVM Usage

Installing NVM (Node Version Manager)

Node version manager is a script to manage multiple active node.js versions. see Installing Node.js with nvm to Linux & macOS & WSL

NVM On macOS

Install NVM on macOS using brew

brew install nvm

Create a folder for the current user .nvm where the files will reside.

mkdir ~/.nvm

Install the last LTS version

nvm install --lts

You can select Node.js version by running nvm use v16.14.0 (or another version number). Another alternative: create a small Bash shell script to enable the right environment variables for your project.

nvm use node

Check if everything is working as expected

nvm run node --version

Create two user environment variables NVM_DIR and NVM_HOMEBREW

export NVM_DIR="$HOME/.nvm"
NVM_HOMEBREW="/usr/local/opt/nvm/nvm.sh"
[ -s "$NVM_HOMEBREW" ] && \. "$NVM_HOMEBREW"

The NODE_PATH variable can also be useful for some applications, for example, VScode, this is the code you need to put after the previous variables.

[ -x "$(command -v npm)" ] && export NODE_PATH=$NODE_PATH:`npm root -g`

NVM On Ubuntu/Linux/macOS

  1. Open Terminal.
  2. Run the following command to install NVM:
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
    
  3. Follow the instructions in the terminal to complete the installation.
  4. Restart the Terminal or run source ~/.bashrc to start using NVM.

Windows:

  1. Download the latest installer from the NVM repository: https://github.com/coreybutler/nvm-windows/releases
  2. Run the installer and follow the setup instructions.
  3. Restart your computer to start using NVM.

NVM Commands

Install the latest LTS version

nvm install --lts

Install a specific Node.js version. nvm install <version>

nvm install 14.17.0

Use a specific Node.js version. nvm use <version>

nvm use 14.17.0
nvm use --lts
nvm use -g --lts

Uninstall a specific Node.js version. nvm uninstall <version>

nvm uninstall 14.17.0

List installed Node.js versions.

nvm ls

List available Node.js versions that can be installed.

nvm ls-remote

Display the currently active Node.js version.

nvm current

Create an alias for a specific Node.js version. nvm alias <name> <version>

nvm alias default 14.17.0

Use the default Node.js version set by an alias.

nvm use default

Display the path to a specific Node.js version. nvm which <version>

nvm which 14.17.0

Display the current NVM version.

nvm version

Display the current NVM version (alternative command)

nvm --version

Reinstall or migrate from older node versions to lts.

nvm install --lts --reinstall-packages-from=current

Note: Replace <version> with the desired Node.js version (e.g., 14.17.0, 12.22.1).

That’s it! You now have a cheat sheet for installing and using Node Version Manager (NVM) on different operating systems.

NVM Usage

Usage:
  nvm --help                                  Show this message
    --no-colors                               Suppress colored output
  nvm --version                               Print out the installed version of nvm
  nvm install [<version>]                     Download and install a <version>. Uses .nvmrc if available and version is omitted.
   The following optional arguments, if provided, must appear directly after `nvm install`:
    -s                                        Skip binary download, install from source only.
    -b                                        Skip source download, install from binary only.
    --reinstall-packages-from=<version>       When installing, reinstall packages installed in <node|iojs|node version number>
    --lts                                     When installing, only select from LTS (long-term support) versions
    --lts=<LTS name>                          When installing, only select from versions for a specific LTS line
    --skip-default-packages                   When installing, skip the default-packages file if it exists
    --latest-npm                              After installing, attempt to upgrade to the latest working npm on the given node version
    --no-progress                             Disable the progress bar on any downloads
    --alias=<name>                            After installing, set the alias specified to the version specified. (same as: nvm alias <name> <version>)
    --default                                 After installing, set default alias to the version specified. (same as: nvm alias default <version>)
  nvm uninstall <version>                     Uninstall a version
  nvm uninstall --lts                         Uninstall using automatic LTS (long-term support) alias `lts/*`, if available.
  nvm uninstall --lts=<LTS name>              Uninstall using automatic alias for provided LTS line, if available.
  nvm use [<version>]                         Modify PATH to use <version>. Uses .nvmrc if available and version is omitted.
   The following optional arguments, if provided, must appear directly after `nvm use`:
    --silent                                  Silences stdout/stderr output
    --lts                                     Uses automatic LTS (long-term support) alias `lts/*`, if available.
    --lts=<LTS name>                          Uses automatic alias for provided LTS line, if available.
  nvm exec [<version>] [<command>]            Run <command> on <version>. Uses .nvmrc if available and version is omitted.
   The following optional arguments, if provided, must appear directly after `nvm exec`:
    --silent                                  Silences stdout/stderr output
    --lts                                     Uses automatic LTS (long-term support) alias `lts/*`, if available.
    --lts=<LTS name>                          Uses automatic alias for provided LTS line, if available.
  nvm run [<version>] [<args>]                Run `node` on <version> with <args> as arguments. Uses .nvmrc if available and version is omitted.
   The following optional arguments, if provided, must appear directly after `nvm run`:
    --silent                                  Silences stdout/stderr output
    --lts                                     Uses automatic LTS (long-term support) alias `lts/*`, if available.
    --lts=<LTS name>                          Uses automatic alias for provided LTS line, if available.
  nvm current                                 Display currently activated version of Node
  nvm ls [<version>]                          List installed versions, matching a given <version> if provided
    --no-colors                               Suppress colored output
    --no-alias                                Suppress `nvm alias` output
  nvm ls-remote [<version>]                   List remote versions available for install, matching a given <version> if provided
    --lts                                     When listing, only show LTS (long-term support) versions
    --lts=<LTS name>                          When listing, only show versions for a specific LTS line
    --no-colors                               Suppress colored output
  nvm version <version>                       Resolve the given description to a single local version
  nvm version-remote <version>                Resolve the given description to a single remote version
    --lts                                     When listing, only select from LTS (long-term support) versions
    --lts=<LTS name>                          When listing, only select from versions for a specific LTS line
  nvm deactivate                              Undo effects of `nvm` on current shell
    --silent                                  Silences stdout/stderr output
  nvm alias [<pattern>]                       Show all aliases beginning with <pattern>
    --no-colors                               Suppress colored output
  nvm alias <name> <version>                  Set an alias named <name> pointing to <version>
  nvm unalias <name>                          Deletes the alias named <name>
  nvm install-latest-npm                      Attempt to upgrade to the latest working `npm` on the current node version
  nvm reinstall-packages <version>            Reinstall global `npm` packages contained in <version> to current version
  nvm unload                                  Unload `nvm` from shell
  nvm which [current | <version>]             Display path to installed node version. Uses .nvmrc if available and version is omitted.
    --silent                                  Silences stdout/stderr output when a version is omitted
  nvm cache dir                               Display path to the cache directory for nvm
  nvm cache clear                             Empty cache directory for nvm
  nvm set-colors [<color codes>]              Set five text colors using format "yMeBg". Available when supported.
                                               Initial colors are:
                                                   b  y  g  r  e
                                               Color codes:
                                                 r/R = red / bold red
                                                 g/G = green / bold green
                                                 b/B = blue / bold blue
                                                 c/C = cyan / bold cyan
                                                 m/M = magenta / bold magenta
                                                 y/Y = yellow / bold yellow
                                                 k/K = black / bold black
                                                 e/W = light grey / white

Example:
  nvm install 8.0.0                     Install a specific version number
  nvm use 8.0                           Use the latest available 8.0.x release
  nvm run 6.10.3 app.js                 Run app.js using node 6.10.3
  nvm exec 4.8.3 node app.js            Run `node app.js` with the PATH pointing to node 4.8.3
  nvm alias default 8.1.0               Set default node version on a shell
  nvm alias default node                Always default to the latest available node version on a shell

  nvm install node                      Install the latest available version
  nvm use node                          Use the latest version
  nvm install --lts                     Install the latest LTS version
  nvm use --lts                         Use the latest LTS version

  nvm set-colors cgYmW                  Set text colors to cyan, green, bold yellow, magenta, and white