文章目录
1. nvm 介绍
本文记录的是 Linux(MacOS) 的 nvm 使用总结,和 Windows 版的 nvm 有些命令是不一样的
nvm 全称 node version manager,也就是 node 版本控制
-
nvm 是一个 node 的版本管理工具,它是一个命令行应用,可以简单操作 node 版本的切换、安装、查看等
-
当你进行两个或多个 node 项目开发,并且这些项目的 node 版本要求不一样,nvm 可以很好的进行 node 版本切换
常用命令总结,以便后续回顾用法,更多命令请继续往下看
bash
# 查看 nvm 版本号
nvm -v
# 查看已安装的 node 版本
nvm ls
# 查看指定版本的所有 lts 版本
nvm ls-remote --lts 16
nvm ls-remote --lts 16.13
# 安装 v16 最新的 lts 版本
nvm install 16 --lts
nvm install 16.13 --lts
# 卸载某个版本
nvm uninstall 16.13
2. nvm 安装
如果你的电脑已经安装 node,那么在安装 nvm 之前要先卸载掉,避免后面产生不必要的冲突
手动安装
运行安装脚本,因为这是安装指定版本,所以你安装时应从官方代码仓库中获取最新版本的安装命令
bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash
安装脚本会将 nvm 仓库拉取到 ~/.nvm,并自动将下方代码片段添加到正确的 Shell 配置文件
- 如果当前是 Zsh 终端,会在
~/.zshrc中添加 - 如果当前是 Bash 终端,会在
~/.bashrc中添加
bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
它的主要作用是:每次打开一个新的终端窗口时,自动加载 nvm 环境,让你能够直接使用 nvm 命令
逐行解释它的详细功能:
bash
# 定义 nvm 的安装目录,设置一个环境变量 NVM_DIR,指向 nvm 的安装位置
export NVM_DIR="$HOME/.nvm"
# 加载 nvm 的核心功能脚本,比如:nvm_install、nvm_use 等
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
# 加载自动补全脚本,比如:输入 nvm in,按下 tab,会自动提示 nvm install 命令可用
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
手动升级
如果你是手动安装的 nvm,并且想要升级版本,运行以下脚本:
bash
# 升级脚本做的事情:进入 nvm 安装目录、拉取最新变更、查看最新版本、使用新版本
(
cd "$NVM_DIR"
git fetch --tags origin
git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`
) && \. "$NVM_DIR/nvm.sh"
手动卸载
想要手动卸载 nvm,执行以下操作(从官方仓库中查看的步骤):
首先,使用 nvm unload 从终端会话中移除 nvm 命令并删除安装目录,依次运行以下命令:
bash
nvm_dir="${NVM_DIR:-~/.nvm}"
nvm unload
rm -rf "$nvm_dir"
编辑 Shell 配置文件,并删除下面内容:
bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
3. 包管理器安装
第一步:通过 homebrew 的 install 命令安装 nvm
bash
brew install nvm
nvm 安装成功后,执行命令查看 nvm 版本,你会发现,提示找不到 nvm 命令,这是因为终端 shell 没有正确加载 nvm 脚本
bash
nvm -v
要解决这个问题,要先确认当前终端使用的 shell 类型(目前大多数都是使用 zsh,也是当前新版 mac 默认的 shell)
bash
echo $SHELL
第二步:将以下内容添加到终端配置文件(不同的 shell 类型,终端配置文件是不同的),让终端能够正确加载 nvm 脚本
终端的 shell 类型如果是 zsh,将以下内容添加到 ~/.zshrc 文件
export NVM_DIR="$HOME/.nvm"
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh" # This loads nvm
[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion
终端的 shell 类型如果是 bash,运行以下命令,可以将内容添加到 ~/.bash_profile 文件中
bash
echo 'source /opt/homebrew/opt/nvm/nvm.sh' >> ~/.bash_profile
source ~/.bash_profile

卸载 nvm
bash
# 第一步: 卸载命令
brew uninstall nvm
# 第二步: 去除终端配置文件中 nvm 相关内容
export NVM_DIR="$HOME/.nvm"
# 第三步: 删除 nvm 安装目录
rm -rf ~/.nvm
4. nvm 命令概览
nvm 常用命令概览:
| 命令 | 描述 | 短名称用法 |
|---|---|---|
| nvm | 查看所有命令 | - |
| nvm --version | 查看 nvm 版本 | nvm -v |
| nvm list | 查看已安装的 node 版本 | nvm ls |
| nvm ls-remote | 查看远程可安装的版本 | - |
| nvm current | 查看当前使用的 node 版本 | - |
| nvm use | 切换 node 版本,临时使用,仅在当前终端会话中有效 | - |
bash
# 查看 nvm 版本
nvm -v
nvm --version
# 临时切换版本
nvm use <version>
5. 查看可用的版本
运行以下命令,可以知道能够安装哪些 node 版本:
bash
# 列出所有可安装的远程 node 版本
nvm ls-remote
如果只想看可以安装的长期支持版本,也就是 LTS 版本,可以使用 --lts 参数:
bash
# 列出所有可安装的 lts 版本
nvm ls-remote --lts
# 只查看某个大版本的 lts 版本
nvm ls-remote --lts 16
nvm ls-remote --lts 16.20
6. 安装和卸载 node
安装和卸载:
bash
nvm install <version>
nvm uninstall <version>
使用示例:
bash
# 安装指定版本
nvm install 10.24.1
# 安装 16.x 的最新版
nvm install 16
# 安装 16.13.x 的最新版
nvm install 16.13
# 安装最新的 LTS 版本
nvm install --lts
# 安装 14 的最新 lts 版本
nvm install 14 --lts
7. 查看已安装列表
查看所有已安装的 node 版本
bash
# 也可以使用缩略名:nvm ls
nvm list
nvm ls
还可以通过指定版本号,只查看某个版本范围的列表
bash
# 只显示 22 版本的列表
nvm list 22
8. 切换 node 版本
nvm use 命令用于切换和使用指定版本,它的主要功能:
- 切换版本:将当前终端会话中的 node 和 npm 切换到指定版本
- 临时使用:仅在当前终端会话中生效,其他终端窗口或新的窗口不受影响
bash
# 切换到具体的某个版本号
nvm use 16.20.2
# 不输入完整的版本号也可以切换
nvm use 14
# 使用最新的 LTS 版本
nvm use --lts
nvm alias default 命令用于设置默认版本,在新的终端会话中自动使用该默认版本
bash
# 将 16.20.2 设置为默认版本,每次打开新的终端窗口时都会自动切换到这个版本
nvm alias default 16.20.2
# 也支持版本号缺省值的用法,比如,将 v12.x、v12.18.x 设置为默认版本
nvm alias default 12
nvm alias default 12.18
结合上面命令,实际开发中,面对多个项目使用不同的 node 版本时,我们应该怎么利用 nvm 来便于我们使用呢 ?
- 首先,设置一个默认版本,打开终端会话时默认使用该版本
- 如果项目要求的版本和默认版本不一致,在进入项目根目录后,通过
nvm use切换到项目需要的版本即可
如果觉得手动切换版本麻烦,也可以通过 .nvmrc 配置文件和自动化脚本实现自动切换版本。.nvmrc 用法详解
9. nvm 缓存清理
查看 nvm 缓存目录
bash
nvm cache dir
清除 nvm 的 node 安装包缓存
nvm cache clear