nvm-desktop
# nvm-desktop A cross-platform Node.js version manager with both: - **GUI app** (`nvm-desktop`) for visual management - **CLI tool** (`nvmd`) for terminal workflows Supports `macOS`, `Windows`, and `Linux`. English | [简体中文](./README-zh_CN.md) ## Screenshot

## Why use it - Install and uninstall Node.js versions quickly - Switch global Node.js version with one command/click - Pin Node.js versions per project - Keep environments isolated across Node.js versions - Use GUI or CLI based on your workflow ## Install Download from releases: - [GitHub Releases](https://github.com/1111mp/nvm-desktop/releases) After installation, ensure these are available in terminal: ```shell nvmd -V node -v npm -v ``` ## Core usage (CLI-first) ### 1) Install a Node.js version ```shell nvmd install 20.18.0 ``` ### 2) List installed versions ```shell nvmd ls ``` ### 3) Switch global version ```shell nvmd use 20.18.0 node -v ``` ### 4) Set version for current project ```shell nvmd use 18.20.4 --project node -v ``` ### 5) Check current version ```shell nvmd current ``` ### 6) Uninstall a version ```shell nvmd uninstall 16.20.2 ``` ### 7) Find executable path ```shell nvmd which node nvmd which npm ``` ## Recommended project workflow For each project: 1. Open project root 2. Choose Node.js version with `nvmd use --project` 3. Run `node -v` to confirm 4. Install dependencies and develop as usual This helps keep dependency/toolchain behavior consistent per repo. ## GUI usage In `nvm-desktop`, you can: - browse available Node.js versions - install/uninstall versions - switch global default version - bind Node.js versions to projects - manage settings such as mirror and language If you prefer clicking over commands, most common operations are available in GUI. ## Data location `nvm-desktop` stores data in: - macOS / Linux: `~/.nvmd` - Windows: `%HOMEPATH%\.nvmd` Typical contents: - `bin/` shims (`node`, `npm`, `npx`, `nvmd`, `corepack`) - `versions/` installed Node.js runtimes - `default` global default version - `projects.json` per-project version bindings - `setting.json` app settings ## FAQ ### Are global npm packages shared between Node.js versions? By default, **no** (environments are isolated). To share global packages, set a common prefix: ```shell npm config set prefix "/path/to/shared-global" ``` ### GUI or CLI: which one should I use? - Use **GUI** for discovery and visual management - Use **CLI (`nvmd`)** for automation, scripts, and terminal-first work ## Develop locally Prerequisites: - Rust - Node.js - pnpm Run: ```shell pnpm check pnpm install pnpm dev ``` Build package: ```shell pnpm build ``` Artifacts: - `./src-tauri/target/release/bundle` ## License [MIT](./LICENSE)