pnpm 支持切换 nodejs 版本号后,什么 nvm,n 之类工具就不香了,直接用 pnpm 切换,没有其他依赖,很方便。
但是 pnpm 依赖较高版本的 nodejs,如果使用 pnpm 安装切换到一个低版本的 nodejs 后,就无法方便的切换回来。
pnpm 切换版本的原来是,将 nodejs 下载到 ~/.local/share/pnpm/nodejs 目录,然后建立
~/.local/share/pnpm/node 到 ~/.local/share/pnpm/nodejs/$version/bin/node
~/.local/share/pnpm/nodejs_current 到 ~/.local/share/pnpm/nodejs/$version 的软连接,
我们可以写个脚本,恢复这个软件接对应的版本号
#!/bin/bash
# 检查是否提供了版本号作为参数
if [ -z "$1" ]; then
echo "Usage: $0 <target_node_version>"
exit 1
fi
# 获取目标 Node.js 版本号
TARGET_VERSION="$1"
# Node.js 存储目录
NODE_DIR=~/.local/share/pnpm/nodejs
# 当前使用的 Node.js 版本路径
CURRENT_NODE_PATH="$NODE_DIR/nodejs_current"
# 目标 Node.js 版本路径
TARGET_NODE_PATH="$NODE_DIR/$TARGET_VERSION/bin/node"
# 删除旧的软链接
rm -f ~/.local/share/pnpm/node
rm -f ~/.local/share/pnpm/nodejs_current
# 创建新的软链接
ln -s "$TARGET_NODE_PATH" ~/.local/share/pnpm/node
ln -s "$NODE_DIR/$TARGET_VERSION" ~/.local/share/pnpm/nodejs_current
# 验证是否切换成功
CURRENT_NODE_VERSION=$(~/.local/share/pnpm/node --version)
if [ "$CURRENT_NODE_VERSION" = "v$TARGET_VERSION" ]; then
echo "Successfully switched to Node.js $TARGET_VERSION"
else
echo "Failed to switch to Node.js $TARGET_VERSION"
exit 1
fi
保存上述脚本为 switch-node-version.sh,并确保赋予执行权限:
chmod +x switch-node-version.sh
将文件放到可执行文件路径下,然后就可以使用 switch-node-version.sh 加版本号,将 nodejs 切换回支持 pnpm 的高版本了。