Comparison of node version managers

Name

Platform

Mechanism

Language

Global modules

Directories

Notes

nvm-windows

2033 stars

Windows

Directory symlink

Go

Per-version (but not per-arch, so switching arch can be problematic for native modules)

·         Installs to AppData\Roaming\nvm

·         Downloads node binaries under AppData\Roaming\nvm

·         Directory symlink is created at Program Files\nodejs, pointing to AppData\Roaming\nvm\NODEVERSION

·         Global modules are installed under AppData\Roaming\nvm\NODEVERSION\node_modules

·         Always uses matching NPM version.

·         Pops 2 UAC prompts when switching node versions.

·         When switching arch, swaps filenames between node32.exe, node64.exe, node.exe

nodist

583 stars

Windows

Shim EXEs

Go

Shared across all versions & architectures

·         Installs to Program Files (x86)\Nodist (nothing under 64bit Program Files)

·         Downloads node binaries (incl. x64) under Program Files (x86)\Nodist

·         Global modules are installed under Program Files (x86)\Nodist\bin\node_modules

·         NPM version can be managed separately (npm is also shimmed).

·         Does not pop any UAC prompts when downloading or switching.

·         Shim launches node/npm executable as a 2nd process.

nvmw

492 stars

Windows

Edits PATH

Batch script, WSH JS

Shared across all versions & architectures

·         No installer: git clone and add to path

·         Downloads node binaries under the nvmw directory.

·         Global modules are installed in their default location, AppData\Roaming\npm\node_modules

·         No longer maintained

nvm

14875 stars

Mac/Linux

Edits PATH

Shell scripts

Per-version

(does not support switching arch)

·         Installs to ~/.nvm (or other configured location)

·         Downloads node binaries under ~/.nvm/versions

·         Global modules are installed under ~/.nvm/versions/node/NODEVERSION

·         Always uses matching NPM version.

·         Always uses matching architecture (cannot use 32-bit node on 64bit system).

n

5079 stars

Mac/Linux

Copies binaries

Shell scripts

Shared across all versions & architectures

·         Installs to ~/n (or other configured location)

·         Downloads node binaries under ~/n/n/versions/node

·         Global modules are installed under ~/n/lib

·         Always uses matching NPM version.

·         Claims to support switching architectures, but it didn't work for me.

nave

967 stars

Mac/Linux

Edits PATH

Shell scripts

Per-version

(does not support switching arch)

·         Downloads node binaries under ~/.nave/installed

·         Global modules are installed under ~/.nave/installed/NODEVERSION

·         Creates a new sub-shell with modified PATH.

·         Always uses matching NPM version.

·         Always uses matching architecture (cannot use 32-bit node on 64bit system).

·         Also allows installing a selected version globally to /usr/local/bin.

nodebrew

598 stars

Mac/Linux

Directory symlink

Perl

Per-version

(does not support switching arch)

·         Installs to ~/.nodebrew (or other configured location)

·         Downloads node binares (or compiles from source) under ~/.nodebrew/node

·         Global modules are installed under ~/.nodebrew/node/NODEVERSION

·         Always uses matching NPM version.

·         Always uses matching architecture (cannot use 32-bit node on 64bit system).

nodenv

255 stars

Mac/Linux

Shim scripts

Shell scripts

Per-version

(does not support switching arch)

·         Installs to ~/.nodenv (or other configured location)

·         Downloads node binaries under ~/.nodenv/versions

·         Global modules are installed under ~/.nodenv/versions/NODEVERSION

·         Manages distinct local, global, and shell-specific node versions.

·         Always uses matching architecture (cannot use 32-bit node on 64bit system).

nvs

(new)

Windows

Mac/Linux

Edits PATH

 

Optional directory symlinks

JavaScript,

w/ shell script bootstrap

Per-version

Per-arch

Per-remote

·         Unix: Installs to ~/.nvs (per-user), /usr/local (per-system) or other configured location.

·         Windows: Installs to AppData\Local\nvs (per-user), ProgramData\nvs (per-system) or other configured location.

·         Downloads node binaries under install directory.

·         Always uses matching NPM version.

·         Supports configuring and switching between multiple remote sources (forks).

·         Supports switching architectures.

·         Consistent semantics across Windows & non-Windows platforms