概述
项目做久了,经常会遇到不同项目要对应不同的 node 版本(旧项目要基于旧的 node 版本,新项目用到一些新依赖,又要切换到最新的 node之类的情况),nvm 的出现让我们可以方便快速从不同的 node 版本中快速切换。
安装
卸载已安装到全局的 node/npm
在安装 nvm 之前,先把之前安装的 node 删掉
# 查看已经安装在全局的模块,以便删除这些全局模块后再按照不同的 node 版本重新进行全局安装
npm ls -g --depth=0
# 先用 brew 删除 node(一开始用了 Homebrew 安装 node,所以直接用 brew 卸载 node)
brew uninstall node
# 如果不是用 brew 的话,可以直接删除全局 node_modules 目录
sudo rm -rf /usr/local/lib/node_modules
# 如果不是用 brew 的话,可以直接删除 node
sudo rm /usr/local/bin/node
# 删除全局 node 模块注册的软链
cd /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm
安装 nvm
直接用 homebrew 安装 nvm
brew install nvm
将 nvm 加入到环境变量中
source $(brew --prefix nvm)/nvm.sh
这样就可以直接在命令行中使用 nvm 了
使用
nvm 常用命令
- 安装指定版本,可模糊安装,如:安装v4.4.0,既可nvm install v4.4.0,又可nvm install 4.4
nvm install <版本号>
- 删除已安装的指定版本,语法与install类似
nvm uninstall <版本号>
- 临时切换使用指定的版本node
nvm use <版本号>
- 永久切换使用指定的版本node
nvm alias default <版本号>
- 列出所有安装的版本
nvm ls
- 列出所以远程服务器的版本(官方node version list)
nvm ls-remote
- 显示当前的版本
nvm current
细节
- 安装 yarn
- 官网上介绍,如果用 nvm 安装 node 的话,安装 yarn 要用
brew install yarn --without-node
,但亲测不行,后来看资料说 yarn 删掉了这个参数,换成brew install yarn --ignore-dependencies
,然而,亲测,也是不行。后来直接放弃了,直接用npm install -g yarn
安装
- 官网上介绍,如果用 nvm 安装 node 的话,安装 yarn 要用
nvm use <版本号>
,只是临时切换使用指定的版本node- 安装好 nvm 后,
$PATH
中会有/Users/xxx/.nvm/versions/node/v12.19.0/bin
,其中 v12.19.0 是当前node 的版本号 - 本来用
nvm use <版本号>
切换到需要的版本号上,然后用npm install -g taro
安装是没问题的,但切换了其它命令行后,发现 taro 提示 command not found 。后来细查之后才发现,nvm use <版本号>
只是在当前命令行环境下切换,并不是全局切换。如果想要全局切换,要用nvm alias default <版本号>
- 安装好 nvm 后,