# NVM 与 Volta 对比与使用指南

URL: https://caijiao.org/posts/6
Source: docs/posts/6.md
Description: 本文介绍 Node.js 版本管理工具 NVM 与 Volta 的功能、区别与使用场景，重点推荐 Volta 的优势，帮助你更高效地管理 Node.js 与包管理器。

在前端开发中，Node.js 版本管理是绕不开的问题。不同项目可能需要不同的 Node.js 版本，甚至要求固定 npm、yarn 或 pnpm 的版本。为了解决这些问题，常见的工具有 **NVM (Node Version Manager)** 和 **Volta**。本文将对它们进行介绍和对比，并重点推荐 Volta。

## 什么是 NVM？

[NVM](/nvm/) 全称 **Node Version Manager**，是最常见的 Node.js 版本管理工具，诞生较早，生态成熟。

### 特点

- 支持安装、切换多个 Node.js 版本。
- 使用 `.nvmrc` 文件指定项目所需版本。
- 跨平台（Linux、macOS 原生支持，Windows 有 nvm-windows 替代实现）。
- 命令直观，学习成本低。

### 基本命令

```bash
# 安装指定版本
nvm install 18.17.0

# 使用某个版本
nvm use 18.17.0

# 设置默认版本
nvm alias default 18.17.0
````

## 什么是 Volta？

Volta 是一个更现代化的 JavaScript 工具链管理工具，官方口号是 **"The Hassle-Free JavaScript Tool Manager"**。

### 特点

- **快速**：由 Rust 编写，性能优异，切换几乎无延迟。
- **自动化**：项目中一旦写入配置，Volta 会自动应用正确版本，无需手动 `nvm use`。
- **全局工具隔离**：全局安装的工具（如 `npm install -g serve`）会自动锁定版本，避免环境不一致。
- **跨平台原生支持**：支持 Windows、Linux、macOS，无需第三方替代实现。
- **工具链管理**：不仅能管理 Node.js，还能固定 npm、yarn、pnpm 等工具版本。
- **项目友好**：在 `package.json` 中配置后，团队成员只需 `volta install`，即可保证环境一致。

### 基本命令

```bash
# 安装并固定 Node.js 版本
volta install node@18.17.0

# 安装并固定 pnpm 版本
volta install pnpm@10.17.0

# 全局安装 serve，并保证任何地方都使用相同版本
npm install -g serve

# 查看当前工具链
volta list
```

## Volta 的独特优势

### 1. 自动选择版本

在项目根目录中，如果 `package.json` 包含 Volta 配置：

```json
{
  "volta": {
    "node": "18.17.0",
    "pnpm": "10.17.0"
  }
}
```

当你进入项目目录时，Volta 会**自动切换**到对应的 Node.js 和包管理器版本，无需额外命令。
相比之下，NVM 每次都需要手动执行 `nvm use`，更容易出错。

### 2. 全局工具固定

使用 [Volta](/volta/) 安装的全局工具会自动绑定版本，例如：

```bash
npm install -g typescript
```

安装后，Volta 会在后台记录 TypeScript 的版本，即使你切换 Node.js 版本，也不会影响 `tsc` 的使用。
而 NVM 下，全局工具会依附在 Node.js 版本下，切换版本后可能需要重新安装。

### 3. 团队环境一致性

Volta 将工具链版本写入 `package.json`，团队成员只需：

```bash
volta install
```

即可复现完全一致的环境，避免“在我机器上能跑”的尴尬。

### 4. 更适合 Windows 用户

NVM 在 Windows 平台需要使用第三方实现（nvm-windows），功能和体验都不如类 Unix 系统完整。
Volta 原生支持 Windows，安装与体验完全一致，强烈推荐 Windows 开发者使用。

## NVM 与 Volta 对比

| 功能点                | NVM                        | Volta                       |
| ------------------ | -------------------------- | --------------------------- |
| Node.js 版本管理       | ✅                          | ✅                           |
| npm/yarn/pnpm 版本管理 | ❌                          | ✅                           |
| 跨平台支持              | Linux/macOS（Windows 有替代实现） | ✅（原生支持 Windows、Linux、macOS） |
| 配置文件               | `.nvmrc`                   | `package.json`              |
| 性能                 | Shell 脚本实现，速度一般            | Rust 实现，速度快                 |
| 全局工具隔离             | ❌                          | ✅                           |
| 自动切换版本             | 需要手动执行 `nvm use`           | ✅ 自动切换                      |
| 团队协作               | 需要额外说明 Node 版本             | ✅ 自动锁定工具链                   |

## 使用推荐

- 如果你只需要在 **个人开发环境快速切换 Node.js 版本**，NVM 足够好用。
- 如果你需要 **团队协作、跨平台开发、全局工具一致性** —— 强烈推荐 **Volta**。
- 特别是 **Windows 用户**，Volta 是更佳选择。

::: tip 总结

- **NVM**：轻量、简单，适合个人使用。
- **Volta**：现代、强大，自动化体验好，团队协作最佳实践，推荐优先选择。
:::
