nvm
What it is
nvm is a free command-line tool for installing and using different Node.js versions. It is installed for an individual user and invoked within a shell. It works with POSIX-compliant shells including sh, dash, ksh, zsh, and bash. Users can install particular versions, switch between them, and assign aliases such as a default version. LTS aliases and commands help users install, use, and list long-term support releases. A project can declare its Node.js version in an .nvmrc file, and documented shell snippets can support automatic switching. During installation, nvm can reinstall global npm packages from another Node.js version. It can also install a previously downloaded or cached version offline with the --offline flag. The project documents use in Docker, including an example for CI/CD jobs. On Windows, nvm can work through WSL and may work with Git Bash or Cygwin depending on the environment. Fish shell is unsupported, and the project states that only its latest nvm version is supported. The repository identifies nvm as MIT licensed.
For and against
For
- Free and MIT licensed.
- Install and switch among Node.js versions.
- Supports LTS aliases and commands.
- Project versions can be specified in .nvmrc.
- Can install cached versions offline.
Against
- Fish shell is not supported.
- Only the latest nvm version is supported.
- Windows use depends on WSL or other environments.
The verdict
nvm provides per-user, per-shell Node.js version management, including project-level version selection and offline installation from cache. Users relying on Fish shell should look to community alternatives, and Windows support depends on the environment.
Who it suits
nvm suits developers who need to manage multiple Node.js versions from the command line, including versions specified per project. It can also fit workflows using Docker or CI/CD, provided the shell and environment are supported.
Plans and prices
nvm
Node.js version installation · version switching · aliases · .nvmrc project selection
Read 15 Oct 2026 · github.com
On the record
- Aliases
- Users can create aliases such as default or custom names for Node versions.github.com · read 15 Oct 2026
- API and SDKs
- The README documents a sourced shell command interface and environment variables; it does not describe a hosted HTTP API or SDK.github.com · read 15 Oct 2026
- Automatic switching
- Automatic directory switching is documented as user-added bash or zsh hooks rather than built into the core command.github.com · read 15 Oct 2026
- Core installation
- Users can install the latest Node release, a specific version, or source builds with nvm install.github.com · read 15 Oct 2026
- Docker and CI
- The documentation provides Dockerfile patterns using BASH_ENV and a separate CI/CD container example.github.com · read 15 Oct 2026
- Documentation depth
- The README includes installation, Docker, CI/CD, shell hooks, mirrors, offline mode, environment variables, testing, troubleshooting and uninstall guidance.github.com · read 15 Oct 2026
- Execution helpers
- nvm run and nvm exec run commands with a selected Node version without permanently changing the surrounding shell.github.com · read 15 Oct 2026
- Extensibility
- Mirror URLs, authorization headers and several NVM_* environment variables can customize downloads and installation behavior.github.com · read 15 Oct 2026
- Fish limitation
- The project does not natively support Fish and suggests wrappers or alternative managers.cobalt.googlesource.com · read 15 Oct 2026
- Independent mirror status
- SourceForge identifies its nvm page as an exact mirror and states it is not affiliated with the project.sourceforge.net · read 15 Oct 2026
- Independent project snapshot
- Hysen Labs recorded 95,544 GitHub stars, 10,530 forks, Shell as the main language and MIT licensing on October 15, 2026.hysenlabs.com · read 15 Oct 2026
- Installation model
- It is designed to be installed per user and invoked per shell.github.com · read 29 Sep 2026
- Integrations
- Documented integrations include Docker, Ansible, zsh plugins, bash completion and optional nvshim shims.github.com · read 15 Oct 2026
- Latest release
- The release page lists v0.40.7 as a signed release adding concurrent-install serialization and safer download handling.github.com · read 15 Oct 2026
- License
- nvm is distributed under the MIT License, permitting use, modification, distribution and sale subject to retaining notices.github.com · read 15 Oct 2026
- Limit: Fish shell
- A Stack Overflow answer explains that nvm.sh cannot be sourced directly by Fish because Fish is not POSIX-compatible.stackoverflow.com · read 15 Oct 2026
- Limit: native Windows
- Independent comparison coverage says the original nvm does not work natively on Windows and requires the separate nvm-windows project.ortamarco.me · read 15 Oct 2026
- Limit: shared machines
- Microsoft warns that per-user symbolic-link behavior can make nvm unsuitable for shared developer boxes and multi-agent build servers.learn.microsoft.com · read 15 Oct 2026