Avoids the "version soup" when switching between projects (plain Node, Angular/AngularJS, Salesforce LWC/Aura, etc).
What it does
Detects every Node project in all open workspace folders by recursively finding package.json and .nvmrc files. Dependencies, caches and generated build directories such as node_modules, .next, .nuxt, dist, build, coverage and out are ignored.
Each project directory has its own .nvmrc and status:
Exists and matches the active Node version → status bar shows ✓ Node vX.X.X.
Exists and mismatches → status bar shows an alert and lets you switch versions via nvm use/nvm install right from the menu.
Doesn't exist → status bar warns that .nvmrc is missing and offers to create one with the current Node version.
Click the status bar item to choose and manage a specific project.
This works both when opening a project directory by itself and when opening a repository that contains several projects (for example backend, frontend and mobile). A root-level package.json is treated as its own project and does not override the versions pinned by child projects.
Requirements
nvm-windows installed and on PATH to use the "nvm use" / "nvm install" actions. Without nvm, the extension still detects and flags mismatches, it just can't switch the version automatically.
Settings
wlyNvmrc.notifyOnMismatch (default true): shows a toast when a version mismatch is detected.
wlyNvmrc.pollIntervalSeconds (default 15): interval to re-check the active Node version while the window is focused (0 disables polling; the focus and .nvmrc-change checks stay active).
Development
npm install
npm run watch:esbuild
Press F5 in VS Code to open an Extension Development Host window.