macos,nvm切换node版本

Last Updated:

2022-08-12

step1 查看remote可用版本

nvm ls ;; 先查看正在使用node版本
nvm ls-remote

step2 选择一版安装(或者本地已安装合适版本,跳step3)

nvm install v16.13.2

上面版本号只是举例(一般nvm install就自动切换到新版了。所以在进行step3前,要切回到老版本的node npm use v12.18.4,其中v12.18.4是我的老版号)

step3 获取当前使用node版本的全局安装地址等信息

npm config get prefix
npm config get cache

step4 切换到目标版本node

nvm use vXx.xx.xx

step5 目标版本node全局安装地址等信息设置成原来一样的

npm config set prefix xxx
npm config get cache ;; 如果和原来不一样,那么需要npm config set cache xxx

step6 把全局包的地址,加到PATH变量里头

我的情况,下面写到/.bashrc文件里头(同时已经创建好一个软连接ln -s /Users/apple/.nvm/versions/node/v12.18.4 ~/.nvm-universal)(/.npmrc里头设置了prefix='/Users/apple/.nvm/versions/node/v12.18.4',这是全局包的路径,可以通过npm root -g查看)

# export NODE_PATH="/Users/apple/.nvm/versions/node/v12.18.4/lib/node_modules"
# export NODE_12_BIN="/Users/apple/.nvm/versions/node/v12.18.4/bin"
export NODE_PATH="/Users/apple/.nvm-universal/lib/node_modules" ## .nvm-universal是一个软连接,链接到 /Users/apple/.nvm/versions/node/v12.18.4 ; 是因为直接写/Users/apple/.nvm/versions/node/v12.18.4/bin,由于带有了.nvm/,所以会被nvm ls的时候,把PATH里头的这个给它删除掉,并且换上nvm ls自己添加的
export NODE_12_BIN="/Users/apple/.nvm-universal/bin"
export PATH=${PATH}:${NODE_12_BIN}

step7 原来全局包,可能版本在现在版本的node里头不能用,需要升级

使用npm-check-updates工具进行管理

type ncu ;; 先通过ncu,看下是否已经安装过了npm-check-updates,如果没有安装,需要运行下一句
npm install -g npm-check-updates

;; 有ncu后
ncu -g -u ;; 更新全局包

step8 nvm alias default

把nvm默认的stable改成你的目标版本。否则重启电脑就无效了

nvm alias default vXX.XX.XX