NVM Manager

A VS Code extension for nvm: see every installed Node.js version, switch the
active one, and let a project pin its version through .nvmrc - all without
leaving the editor.
Works with nvm-windows on Windows and nvm-sh on macOS/Linux: switching
repoints the global nvm symlink on Windows and updates the integrated terminal
environment on macOS/Linux.
Screenshots
 Versions |
Features
- Project view: the Node.js version a project declares and where it comes
from (
.nvmrc, .node-version, package.json engines.node), whether it
matches the active version, and the package manager - declared
(packageManager / devEngines), detected from lockfiles, actually in use,
and whether it is available on PATH.
- Registry awareness: the Project view shows which npm registry the project
resolves packages from - the project
.npmrc, .yarnrc / .yarnrc.yml or
bunfig.toml, the global ~/.npmrc, and scoped registries - and flags when
the project registry differs from the global one.
- Versions view in the activity bar: installed versions with the active one
marked, plus an Available list (
nvm list available / nvm ls-remote)
you can install from.
- Switch in one click from the tree, the status bar, or the command palette
(
NVM: Switch Node.js Version...).
- Switch without admin rights: when
nvm use cannot repoint the global
symlink (nvm-windows without admin rights / Developer Mode), the version is
applied to VS Code's integrated terminals through PATH - no system change,
no elevation. The nvmManager.switchMode setting selects auto, system or
terminal.
- Works without nvm: if nvm is not installed at all, the extension falls
back to discovering Node.js installations on disk and switching them in
integrated terminals.
nvmManager.nodeVersionsRoots adds extra locations.
- Active version in the status bar - click it to switch.
- Auto-switch per project: reads
.nvmrc, then .node-version, then
package.json engines.node, resolves it against the installed list (22,
v22.16.0, 22.16, lts/*, node) and switches.
- Global and per-project toggles in the sidebar Settings panel:
- global auto-switch,
- project override (inherits the global value until you change it),
- "ask when off" - prompt before switching when auto-switch is disabled.
- Manage versions: install, uninstall and copy a version from the context
menu, with end-of-life markers on outdated majors.
- Install on demand: when a project pins a version you have not installed,
the notification and the Project view offer to install it, resolving
engines.node ranges against the remote list.
- Pin a project version:
NVM: Pin Active Version to Project writes the
active version to .nvmrc (or .node-version).
- Status bar awareness: the status bar warns when the active version differs
from the project declaration and switches to, or installs, the right version
on click.
- Diagnostics:
NVM: Doctor prints the platform, nvm location, PATH,
symlinks and workspace trust to the output channel.
- Workspace Trust aware: in an untrusted workspace the extension shows
information but never auto-switches, installs or probes anything declared by
project files.
- Localized in English, Russian, Simplified Chinese, Spanish, Japanese and
German - following your VS Code display language.
Requirements
- Windows: nvm-windows
installed and
nvm available. Auto-detects nvm.exe from NVM_HOME, then
PATH, or set nvmManager.nvmPath.
- macOS / Linux: nvm-sh installed.
Auto-detects
NVM_DIR or ~/.nvm, or set nvmManager.nvmDir. Switching
applies to VS Code's integrated terminals.
Installation
- From the Visual Studio Marketplace,
or from the Command Palette (
Ctrl+P / Cmd+P): ext install jenesei-software.nvm-manager.
- Or install a local build: Extensions view >
... > Install from
VSIX....
Getting started
- Open the NVM Manager icon in the activity bar.
- The Versions view lists what is installed; the active version has a green
check.
- Click a version (or the status bar item) to switch. On macOS/Linux, open a
new integrated terminal to pick up the change.
- Open Settings in the same container to configure auto-switch.
To pin a project version, add .nvmrc at the repository root:
22.16.0
Settings
| Setting |
Default |
Scope |
Description |
nvmManager.nvmPath |
"" |
machine-overridable |
Windows only. Absolute path to nvm.exe. Empty means auto-detect. |
nvmManager.nvmDir |
"" |
machine-overridable |
macOS / Linux only. Path to NVM_DIR. Empty means auto-detect. |
nvmManager.autoSwitch |
false |
resource |
Auto-switch the active version from .nvmrc / .node-version / package.json. Set globally or per workspace. |
nvmManager.askWhenAutoSwitchOff |
true |
window |
Ask before switching when auto-switch is disabled. |
nvmManager.registryAdvanced |
false |
window |
Resolve the global npm registry with npm config get registry (includes environment variables) instead of only reading ~/.npmrc. |
nvmManager.switchMode |
auto |
window |
auto tries nvm use and falls back to VS Code terminals when admin rights are required; system always uses nvm use; terminal only switches inside VS Code terminals. |
nvmManager.nodeVersionsRoots |
[] |
machine-overridable |
Extra directories scanned for Node.js installations when nvm is not available. |
When auto-switch is on, opening a workspace silently switches to the pinned
version. When it is off and Ask when off is on, a notification offers
Switch and Always for this project.
Commands
| Command |
Description |
NVM: Refresh |
Reload the installed list and the active version. |
NVM: Switch Node.js Version... |
Pick a version from a quick pick. |
NVM: Refresh Available Versions |
Reload nvm list available. |
NVM: Toggle Auto-switch (Global) |
Flip the global auto-switch setting. |
NVM: Toggle Auto-switch (This Project) |
Flip the project override. |
NVM: Pin Active Version to Project |
Write the active version to .nvmrc / .node-version. |
NVM: Doctor (Diagnostics) |
Print an environment report to the output channel. |
Security
- Runs
nvm locally and reads project files (.nvmrc, .node-version,
package.json) from the open workspace; it has no server component and no
telemetry.
- Values taken from project files are validated before they reach
nvm: version
strings must match a strict allowlist, arguments passed to a shell are quoted,
and the package manager probe only runs known binaries.
- In an untrusted workspace the extension shows information but never
auto-switches, installs or probes anything declared by project files.
- Terminal switching only prepends
PATH for VS Code's integrated terminals: it
needs no administrator rights and never changes the system, the global
symlink or the user PATH.
nvm install / nvm list available reach the network through nvm itself.
Support the project
NVM Manager is free and open source. If it is useful to you:
- ⭐ Star the repository on GitHub — it helps other people find it.
- ☕ DonationAlerts — a one-time donation keeps the project alive.
License
MIT
| |