管理多版本 node -- nvm 的使用
· 阅读需 9 分钟
公司有个老项目要维护,git 拉下来项目就是一阵安装依赖。之后直接 npm run dev
。结果失败了。才想起来这个项目要用 node 11 以下版本。自己的 MacOS 已经在官网安装了 node v12,总不能为此降级成 v10。
突然想起了 nvm
这个管理库。虽然刚入门时候用过一个管理库,忘了是 n
还是 nvm-widnows
了,这次也正好也好好体验一番。
由于我不用 windows,不确定以下操作是否通用。
安装
项目地址:https://github.com/nvm-sh/nvm
如果是 MacOS 或者 Linux,比较方便,直接 curl
或者 wget
就行了。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
# 或者
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
之后,它提示我不用配置环境变量了,因为已经帮我配置好了(我用的 zsh)。
其他 shell 不确定 是否要自己配置下。安装结束时会有提示。
通过 nvm
安装的 node,会存放在 ~/.nvm
下。
使用
查询安装的 node
由于我系统已经安装过了,并且通过 nvm 安装了两个版本(10.19.0 和 12.16.1)。
上面三行,显示了安装了那些版本的 node。之后的,都是默认提供的别名(alias)。
nvm ls
-> v10.19.0 # 手动安装的版本,前方有箭头表示当前正在使用此版本
v12.16.1 # 手动安装的版本
system # 系统已安装的版本
default -> 10.19.0 (-> v10.19.0) # 当前默认版本
node -> stable (-> v12.16.1) (default) # 当前最新的 node 版本
stable -> 12.16 (-> v12.16.1) (default) # (已废弃)针对 0.12 之前版本有效,现在和 node 内容完全一致
iojs -> N/A (default) # 当前最新的 iojs 版本(曾经node)
unstable -> N/A (default) # 非稳定版本,我没装
lts/* -> lts/erbium (-> v12.16.1) # 最新的LTS长期支持版本,装了12.16.1
lts/argon -> v4.9.1 (-> N/A) # LTS长期支持版本 v4系列,没装
lts/boron -> v6.17.1 (-> N/A) # LTS长期支持版本 v6系列,没装
lts/carbon -> v8.17.0 (-> N/A) # LTS长期支持版本 v8系列,没装
lts/dubnium -> v10.19.0 # LTS长期支持版本 v10系列,装了
lts/erbium -> v12.16.1 # LTS长期支持版本 v12系列,装了12.16.1
查询当前使用的 node 版本
nvm ls # 可以查看,就是返回内容太多了
nvm current # 直接返回当前是用的版本号
node -v # 直接调用 node 查询版本号,我一般都用这个查
查询远端 node 版本
nvm ls-remote
这个命令会返回所有的 node 版本,费时还不找好。一般都是进行过滤。
比如安装 LTS 长期支持版本,可以加上参数 --lts
nvm ls-remote --lts
如果需要查询 v8 系列 LTS 的版本,可以使用官方语法,但你必须知道它的英文名字:
nvm ls-remote --lts=carbon
不过,我一般都是采用字符串过滤的方案,这样无需记忆每个版本的名字。最主要是,如果不是 LTS 版本,是没有名字的:
nvm ls-remote --lts | grep v8
nvm ls-remote | grep v13
还有一种方案,就是手动去 nodejs.org 查询具体的每个版本。
安装 node
nvm install v12.16.1 # 直接输入版本号进行安装
nvm install 12.16.1 # 可以忽略v标记
nvm install 12 # 输入主版本号也可以安装
nvm install --lts # 安装最新的 LTS 版本
切换 node 版本
nvm use v12.16.1 # 直接输入版本号进行切换
nvm use 12 # 输入主版本好也可以切换
nvm use --lts # 使用最新的 LTS 版本