背景
因为某些无法明说的原因,公司配的电脑无法执行操作 “系统环境变量”的写操作,只能操作“用户环境变量”。故 nvm 无法安装。但是,目前多项目用到的node 版本不同,需要安装多个版本。需要像 nvm 一样 安装多个版本后,自由切换版本。
所以就自己开发了个批处理脚本,自己动手,丰衣足食。
截个图,说下多个 node 版本的放置约定和限制(请重点关注):
- 需要提取卸载 exe 形式安装的所有node 版本,保证无node从残留。
- 必须和执行的批处理(rain_start_v2.bat)放在同一目录。
- node 版本需要下载 zip 的可解压版。
- 每次执行切换版本后,需要重启电脑(让用户环境变量生效)。
- 每次切换版本后,虽然不会影响系统环境变量 path,但会直接涂改 “用户环境变量path”。(如果你在用户环境变量path 里存了很多配置信息,则请慎用。当然作为10年开发的笔者,若不是遇到这家公司奇葩的电脑限制,否则至今对用户环境变量path 从未用过,都是用的系统环境变量path)。
如图所示:
rain_start_v2.bat 代码如下:
@echo off
:: set /p fileString=<./nodes_config.json
:: echo %fileString%
set nodes[0]=C:\Users\xxx\mynodes\node-v14.21.3-win-x64
set nodes[1]=C:\Users\xxx\mynodes\node-v18.18.0-win-x64
set "x=0"
:SymLoop
if defined nodes[%x%] (
call echo %x% : %%nodes[%x%]%%
set /a "x+=1"
GOTO :SymLoop
)
:: 延迟扩展,不然 !nodes[%version%]! is not ok
setlocal EnableDelayedExpansion
set /p version=please input your node version index :
set currentNodeDir=
if ""=="%version%" (
set /a version=0
)
set currentNodeDir=!nodes[%version%]!
echo your node version is %version%
echo %currentNodeDir%
pause;
::echo "we have to delete two elder keys of registor"
reg delete HKCU\Environment /v RAIN_NODE_HOME /f
reg delete HKCU\Environment /v Path /f
echo "we must insert two keys of HKEY_CURRENT_USER [RAIN_NODE_HOME and Path]"
reg add "HKCU\Environment" /f /t REG_SZ /v RAIN_NODE_HOME /d "%currentNodeDir%"
reg add "HKCU\Environment" /f /t REG_SZ /v Path /d "%currentNodeDir%"
pause;
如果想加入新的 node 版本,就在图中代码位置加即可:
set nodes[0]=C:\Users\we749\Documents\mynodes\node-v14.21.3-win-x64
set nodes[1]=C:\Users\we749\Documents\mynodes\node-v18.18.0-win-x64
set nodes[2]=C:\Users\we749\Documents\mynodes\node-v18.18.0-win-x64
set nodes[3]=C:\Users\we749\Documents\mynodes\node-v18.18.0-win-x64
set nodes[4]=C:\Users\we749\Documents\mynodes\node-v18.18.0-win-x64
双击运行:
上面列出了版本的序号,你输入想切换的序号即可。如果不输入直接回车,则选择第一个。
然后记得重启电脑。
cmd 输入 node -v 试试吧。