前些天在 macOS 上启动 Strapi,发现它依赖特定的 Node.js TLS 版本,之前电脑 node 使用 Brew 安装,切换起来也不是太方便,遂尝试了解前端版本管理工具。
发现 Volta(管理 Node 版本) + Corepack(管理依赖安装工具的版本)正式我要找的,笔记记录如下:
Volta 工具
使用 Brew 安装 Volta
$ brew install volta
安装不同版本的 Node
# 安装 Node.js 22 版本
$ volta install node@22
# 安装 Node.js 24 版本
$ volta install node@24
安装 Tools
# 作为演示,暂时先安装,后文有更适合的安装方式
$ volta install pnpm
查看已经安装的工具
$ volta list
输出默认版本

查看已安装的全部 Node 版本
$ volta list node
可以看到多个 Node 版本

设置全局默认 Node 版本 & 设置项目固定的版本
$ volta install node@24 --default
# 在前端项目根目录下执行,需要有 package.json 否则报错
$ volta pin node@22
Pin 之后,Volta 会根据项目自动切换 Node 版本!
另外,可临时指定 Node 版本运行脚本
$ echo "console.log('node version:', process.version)" > app.js
$ volta run --node 22 node app.js
node version: v22.21.1
$ volta run --node 24 node app.js
node version: v24.12.0
卸载 Node 版本
$ volta uninstall node@22 # 卸载特定版本
查看当前使用的 node 路径
$ volta which node
/Users/dongdong/.volta/tools/image/node/24.12.0/bin/node
volta 常用的命令如上,我使用它切换、锁定 Node 版本,很方便!
在项目中,除了锁 Node 版本,对应的依赖工具的版本也推荐锁定,因为 volta 无法锁定 pnpm 的版本,所以使用另外的工具
Corepack 工具
这个 corepack 我是刚听说的工具,它在 Node 16.9 版本中引入,安装了 Node.js 就有。
GPT: Corepack 是 Node 官方内置的工具,用于管理和锁定包管理器(如 pnpm、yarn)的版本,确保项目使用固定的包管理器而不依赖全局安装。
# 卸载 pnpm(之前是由 volta 安装的,无法切换锁定)
$ volta uninstall pnpm
# 安装(使用 volta 统一管理)
$ volta install corepack
success: installed corepack@0.34.5 with executables: corepack, pnpm, pnpx, yarn, yarnpkg
启用 Corepack
# 查看版本
$ corepack -v
0.34.5
$ corepack enable
使用 Corepack 安装 pnpm(准备并激活)
$ corepack prepare pnpm@10.28.0 --activate
(或者)在启用 Corepack 后,直接运行 pnpm 命令也会触发其安装提醒

安装后会打印 pnpm 版本
$ pnpm -v
10.28.0
如果项目中已经有 package.json 文件,可以执行命令设置 pnpm 的版本值,需要三位准确版本号
$ pnpm pkg set packageManager=pnpm@10.28.0
执行后会写入 packageManager 字段声明 pnpm 版本,示例 JSON 如下:
{
"name": "volta-test",
"private": true,
"version": "0.1.0",
"scripts": {
"dev": "node index.js"
},
"volta": {
"node": "22.21.1"
},
"packageManager": "pnpm@10.28.0"
}
补充说明:Corepack 并非只能管理 pnpm,Yarn、Npm 包管理器也都支持,非常适合多项目的管理。
至此,项目中 Volta 锁 Node,Corepack 锁 pnpm,他们的关系如下:
Volta
├─ node
└─ corepack
└─ pnpm@10.28.0(按项目)
最后总结
GPT:Volta 是 Node 与工具版本管理的核心,Corepack 是包管理器版本管理的核心,两者结合后可以实现项目级、团队级、跨机器环境一致性。