[TOC] #### 1. nvm 介绍 --- 本文记录的是 Linux(MacOS) 的 nvm 使用总结,和 [Windows 版的 nvm](https://www.itqaq.com/index/564.html) 有些命令是不一样的 [nvm](https://github.com/nvm-sh/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.39.5/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 # 安装 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 ``` `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 用法详解](https://www.itqaq.com/index/563.html) #### 9. nvm 缓存清理 --- 查看 nvm 缓存目录 ```bash nvm cache dir ``` 清除 nvm 的 node 安装包缓存 ``` nvm cache clear ```