使用 pnpm env 管理 Node.js 版本(Mac)

前言

前端日常开发中经常需要在多个 Node.js 版本间切换。

传统方案是使用 nvm,但它们需要额外安装和维护。

pnpm 作为流行的包管理器,内置了 pnpm env 命令,可以直接管理 Node.js 的安装与切换。

这样我们只需安装一个工具,就能同时管理包依赖和 Node 运行时版本。

卸载 nvm

在卸载 nvm 之前先清理它下载的所有 Node 版本,释放磁盘空间。

打开配置文件(以 zsh 为例):

1
vi ~/.zshrc

在文件中删除以下行:

1
2
3
4
5
6
# 使用 npmmirror
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

保存并重新加载配置:

1
source ~/.zshrc

删除程序

1
rm -rf ~/.nvm

安装 pnpm

1
curl -fsSL https://get.pnpm.io/install.sh | sh -
1
2
3
4
5
6
7
8
# 1. 手动下载官方安装脚本
curl -fsSL https://get.pnpm.io/install.sh -o pnpm-install.sh

# 2. 使用 sed 命令将脚本中的 GitHub 地址替换为 ghproxy 加速镜像
sed -i '' 's|https://github.com/|https://ghproxy.net/https://github.com/|g' pnpm-install.sh

# 3. 执行本地修改后的脚本进行安装
sh pnpm-install.sh

验证

安装后执行以下命令确认版本:

1
pnpm --version

配置路径

pnpm 安装的 Node.js 默认存放位置以及自定义配置方法。
这部分根据实际需要选择性操作。

查看安装路径

使用以下命令查看当前使用的 Node 路径和 pnpm 全局目录:

1
2
3
# 查看 pnpm 全局 bin 目录
pnpm config get global-dir
pnpm config get global-bin-dir

自定义路径

如果希望将 Node 安装到其他位置,通过 global-dirglobal-bin-dir 配置:

1
2
3
4
# 设置全局目录
pnpm config set global-dir ~/tools/pnpm/global
# 设置全局 bin 目录
pnpm config set global-bin-dir ~/tools/pnpm/bin

配置 PATH

打开 Zsh 配置文件

1
open ~/.zshrc

添加

1
export PATH="/Users/psvmc/tools/pnpm/bin:$PATH"

保存并刷新

1
source ~/.zshrc

设置镜像

1
pnpm config set registry https://registry.npmmirror.com

获取

1
pnpm config get registry

管理 Node 版本

pnpm 提供了 pnpm env 子命令,功能类似于 nvm 的核心能力。
所有操作都在终端中完成,无需手动下载或配置环境变量。

安装与切换

使用 pnpm env use 安装并激活一个特定版本的 Node.js:

1
2
3
4
5
6
# 安装最新的 LTS 版本
pnpm env use --global lts
# 安装指定大版本的最新版
pnpm env use --global 24
# 安装精确版本
pnpm env use --global 20.12.2

--global 参数表示将该版本设置为系统全局的 Node.js 版本。
再次调用即可切换到另一个版本,pnpm 会自动下载并切换:

1
2
pnpm env use --global 24
pnpm env use --global 22

安装npm

pnpm安装的NodeJS默认没有npx和npm

有些环境默认使用的npm或npx。

我们可以再安装

1
pnpm install -g npm

这时候就有npm了

1
2
npm -v
npx -v

设置镜像

1
npm config set registry https://registry.npmmirror.com

验证

打开新终端执行以下命令,确认当前 Node 版本符合预期:

1
node -v

同时确认 pnpm 仍能正常使用:

1
pnpm -v

npx

npx的命令可以替换为pnpm

比如

1
npx hexo g

替换为

1
pnpm hexo g