邂逅 volta
volta 是一个 JavaScript 工具链管理器,用来管理 Node / npm / yarn / pnpm 等版本。 核心功能:
- ✅ 管理 Node 版本
- ✅ 管理 npm / yarn / pnpm 版本
- ✅ 项目级锁定工具版本
- ✅ 自动切换 Node 版本(不用手动切)
volta 核心命令
安装 Node
安装最新版 Node
bash
volta install node指定版本
bash
volta install node@18
volta install node@20.10.0安装 npm / yarn / pnpm
bash
volta install npm
volta install yarn
volta install pnpm指定版本
bash
volta install yarn@1.22.19⚠️ 这里和 nvm 最大不同:
Volta 会把工具版本“固定”在当前环境。
查看当前工具链
bash
volta list项目级锁定版本(核心功能🔥) 在项目目录执行
bash
volta pin node@18它会在 package.json 里自动添加
json
"volta": {
"node": "18.20.4"
}以后:
切换到这个项目目录
Volta 自动切 Node 版本
无需手动 use
这就是 Volta 牛逼的地方。
切换默认版本
bash
volta install node@20默认就会变成最新安装的版本 Volta 没有像 nvm 那种 use 概念
卸载版本
bash
volta uninstall node@18查看所有安装版本
bash
volta list allvolta 原理
和 nvm 最大区别:
- nvm 原理
- 修改 shell 环境变量
- 改 PATH
- 切换慢
- 每次开新 shell 可能丢失
volta 原理 它会:
- 把 node 安装到:
bash
~/.volta/tools/image/node- 在 PATH 前面放一个代理:
bash
~/.volta/bin- 当你执行:
bash
node实际执行的是:
bash
volta shim → 判断当前目录 → 读取 package.json → 选择正确 node → 执行属于“代理转发机制” 性能非常快
实际开发场景
场景 1:公司多个项目 Node 版本不同
项目 A:Node 16 项目 B:Node 20 只需要在各自项目里:
bash
volta pin node@16
volta pin node@20切换目录自动生效。
场景 2:CI 保持一致
只要 package.json 有:
json
"volta": {
"node": "18.20.4"
}团队成员拉代码后自动统一版本。
比 .nvmrc 强很多。
和 nvm 对比
| 特性 | nvm | Volta |
|---|---|---|
| 切换版本 | 手动 use | 自动 |
| 项目锁定 | .nvmrc | package.json |
| 性能 | 较慢 | 快 |
| Windows | 不友好 | 官方支持 |
| 工具链锁定 | 只管 node | node + npm + yarn |
高级玩法
- 锁定 pnpm 版本
bash
volta install pnpm@8
volta pin pnpm@8- 全局安装工具(固定版本)
bash
volta install typescript
volta install eslint这样:
- 全局工具版本也被锁定
- 不会污染系统
- 指定 Node 执行某命令
bash
volta run --node 18 node script.js临时使用某版本