Node & JDK Version ManagerDifferent projects. Different runtimes. One VS Code.Stop running Node & JDK Version Manager lets each VS Code workspace use its own Node.js and JDK version — while keeping your integrated terminal in sync.
Why use it?Working across multiple projects often means dealing with different runtime requirements:
Switching versions manually with With Node & JDK Version Manager, you can pin a runtime to a VS Code workspace and let the extension keep your integrated terminals in sync. Key features
Built for developers working across multiple stacksEspecially useful for projects such as:
🚀 Quick Start
That's it. New integrated terminals will use the selected runtime. 🎬 See it in actionProject A → Node 18 Project B → Node 22 Both projects can stay open at the same time, with each workspace using its own runtime. FeaturesEvery workspace keeps its own versionOpen two projects side by side — one on Node 18 and one on Node 22. Each VS Code window keeps its own runtime. Picking a version pins it to that workspace; the other window is untouched. Use:
This makes it possible to work on projects requiring different Node.js or JDK versions at the same time. nvm installations are listed tooNode versions installed by nvm appear in the list alongside this app's own versions and are badged They can be pinned like any other version. The nvm root is detected through:
nvm is strictly read-onlyNothing is ever installed into or deleted from an nvm root. For nvm-managed versions:
Version filesA workspace runtime can also be selected through version files in the workspace root:
For example:
Commit the version file to your repository and the whole team can use the same runtime. Disable version-file detection with:
Supported formats include:
Codenames such as Global default vs. workspace pinThe extension supports two runtime scopes. Workspace pinA workspace pin applies only to the current VS Code window.
Workspaces with their own pin ignore the global default entirely. Global defaultThe global default is the shared Right-click a version and select: Set as Global Default or run: NodeVersions: Set Global Default Node Version The extension confirms first because changing the global default reaches outside the current VS Code window. To clear a workspace pin: NodeVersions: Unpin Workspace (Use Global Defaults) Runtime resolution orderA runtime is resolved in this order:
If a pinned version is not installed, the extension reports it in the status bar and does not silently fall back to the global default. If you previously enabled the machine-wide setup in the Settings tab, the shell may still inherit the system Using an nvm version as the global defaultSetting an nvm version as the global default points This works, but two managers then claim the same tree. A later Pinning an nvm version to a workspace does not have this problem. New terminals get the version you pickedA workspace pin applies the selected Node.js installation to A shell cannot have its VS Code relaunches terminals you have not typed in by itself. For the rest, the extension offers to relaunch them after a version change. Relaunching a terminal stops whatever is currently running in it, so the extension asks for confirmation first. Configure this behavior with:
Available values:
Terminal scopeA workspace pin covers:
External shells and processes launched outside VS Code continue to follow the global default. If you enabled the Settings tab's shell-startup setup, your PowerShell profile or The extension re-applies the workspace pin through VS Code's terminal shell integration, so the workspace pin still wins. If:
is turned off, the shell profile wins instead and the extension warns you about it. Multi-root workspacesThe pin is window-wide, not per-folder. In a multi-root workspace, all folders share the same runtime pin. Turn the whole automatic terminal environment mechanism off with:
When disabled, workspace pins have nothing to act on. The full panelOpen the panel with: NodeVersions: Open Panel or click the active version in the status bar. The panel provides:
Port monitor
You can terminate a process after confirmation. This is useful when you encounter:
or:
without leaving VS Code to find the process. Where things are installed
On Windows, Node versions are downloaded from nodejs.org. JDKs are downloaded from Eclipse Temurin (Adoptium). Machine-wide PATH changesThe Settings tab can register the manager in your user Windows
macOS / Linux
This allows shells outside VS Code to see the active version. You do not need machine-wide configuration for the integrated VS Code terminal — workspace runtime switching works out of the box. Because this configuration reaches outside the editor and persists after VS Code closes, the extension asks for confirmation before applying it. Settings
Requirements
The extension runs where the VS Code workspace filesystem is located. This means that in Remote-SSH, WSL, or Dev Containers, it manages the remote machine's Node.js and JDK versions. On Windows, creating the Also available as a desktop appThe same engine is available as a standalone desktop application: https://github.com/duycamau2016/NodeVersions/releases LicenseISC |