---
url: /dev/rgby0oc4/index.md
description: 使用 nvm 管理 Node.js 版本，nrm 切换 npm 源，解决多版本 Node 共存和国内 npm 下载慢的问题。
---
使用 nvm 和 nrm 管理node

## nvm

### 介绍

`nvm` is a version manager for [node.js](https://nodejs.org/en/), designed to be installed per-user, and invoked per-shell. `nvm` works on any POSIX-compliant shell (sh, dash, ksh, zsh, bash), in particular on these platforms:`unix`, `macOS`,`windows(WSL)`.

`nvm` 是 [node.js](https:nodejs.orgen) 的版本管理器，设计为按用户安装，按 shell 调用。 `nvm` 适用于任何符合 POSIX 的 shell（sh、dash、ksh、zsh、bash），特别是在这些平台上：`unix`，`macOS`，和 `windows(WSL)`。

### 下载并更新

终端输入以下命令下载并更新`nvm`：

```shell
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
```

**其中** `v0.38.0` 为版本号，具体版本号可前往 `github` 网站查看：`nvm-sh/nvm`

**安装完成后，可以使用命令**`nvm version`查询到当前安装信息：

```shell
[root@instance ~]# nvm version
v16.3.0
```

### 安装Node

1. 查看可用node版本
   使用`nvm version`或者前往 [下载 | Node.js (nodejs.org)](https://nodejs.org/zh-cn/download/) 查看版本号。
2. 查看当前以安装使用的node版本

   ```shell
   nvm ls
   ```
3. 安装指定版本号的node.js，以 `16.3.0` 版本为例：

   ```shell
   nvm install 16.3.0
   ```
4. 使用特定版本的 node.js

   ```shell
   nvm on   #开启nvm管理
   nvm use 16.3.0 #使用16.3.0版本的node
   ```
5. 验证安装是否成功

   ```shell
   node -v #验证node版本
   npm -v#验证npm版本
   ```

   ```shell
   [root@instance-4khkbgwo ~]# node -v  #验证node版本
   v16.3.0
   [root@instance-4khkbgwo ~]# npm -v#验证npm版本
   7.15.1
   ```

### 命令大全

```shell :collapsed-lines
nvm --help                              
#显示此消息
nvm --version                            
#打印出安装的 nvm 版本
nvm install [-s] <version>              
#从源下载并安装 <version>，[-s]。如果可用，使用 .nvmrc
  --reinstall-packages-from=<version>    
  #安装时，重新安装<node|iojs|node version number>中安装的包
  --lts                                  
  #安装时，只能从LTS（长期支持）版本中选择
  --lts=<LTS name>                       
  #安装时，仅从特定 LTS 行的版本中选择
  --skip-default-packages                
  #安装时，跳过 default-packages 文件（如果存在）
  --latest-npm                          
  #安装后，尝试在给定节点版本上升级到最新的工作 npm
nvm uninstall <version>                  
#卸载一个版本
nvm uninstall --lts                      
#如果可用，使用自动 LTS（长期支持）别名 `lts` 卸载。
nvm uninstall --lts=<LTS name>           
#使用提供的 LTS 行的自动别名卸载（如果可用）。
nvm use [--silent] <version>             
#修改 PATH 以使用 <version>。如果可用，使用 .nvmrc
  --lts                                 
  #如果可用，使用自动 LTS（长期支持）别名 `lts`。
  --lts=<LTS name>                       
  #如果可用，为提供的 LTS 行使用自动别名。
nvm exec [--silent] <version> [<command>]  
#在 <version> 上运行 <command>。如果可用，使用 .nvmrc
  --lts                                  
  #如果可用，使用自动 LTS（长期支持）别名 `lts`。
  --lts=<LTS name>                       
  #如果可用，为提供的 LTS 行使用自动别名。
nvm run [--silent] <version> [<args>]    
#使用 <args> 作为参数在 <version> 上运行 `node`。如果可用，使用 .nvmrc
  --lts                                  
  #如果可用，使用自动 LTS（长期支持）别名 `lts`。
  --lts=<LTS name>                       
  #如果可用，为提供的 LTS 行使用自动别名。
nvm current                              
#显示当前激活的版本
nvm ls                                   
#列出已安装的版本
nvm ls <version>                         
#列出与给定 <version> 匹配的版本
nvm ls-remote                            
#列出源所有可安装的版本
  --lts                                  
  #只列出源LTS(长期支持)的版本
nvm ls-remote <version>                  
#列出与给定<version>
  --lts                                  
  #列出时，只显示LTS（长期支持）版本
  --lts=<LTS name>                       
  #列出时，仅显示特定LTS行的版本
nvm version <version>                    
#将给定的描述解析为单个本地版本
nvm version-remote <version>             
#将给定的描述解析为单个远程版本
  --lts                                  
  #列出时，仅从LTS（长期支持）版本中选择
  --lts=<LTS name>                       
  #列出时，仅从特定LTS行的版本中选择
nvm deactivate                           
#撤消“nvm”对当前shell的影响
nvm alias [<pattern>]                    
#显示以<pattern>开头的所有别名
nvm alias <name> <version>               
#将名为<name>的别名设置为指向<version>
nvm unalias <name>                       
#删除名为<name>
nvm install-latest-npm   
#尝试在当前节点版本上升级到最新的“npm”
nvm reinstall-packages <version>   
#将<version>中包含的全局“npm”包重新安装到当前版本
nvm unload   
#从shell卸载“nvm”
nvm which [current | <version>]   
#显示已安装节点版本的路径。使用.nvmrc（如果可用）
nvm cache dir   
#显示nvm缓存目录的路径
nvm cache clear   
#清楚nvm的缓存
```

## nrm

`nrm` 可以帮助您在不同的npm注册中心之间轻松快速地切换，现在包括：`npm`、 `cnpm`、`taobao`等

### 使用

1. 安装
   ```
   npm install -g nrm
   ```
2. 查看所有可用npm源`nrm ls`
   ```
   [root@instance ~]# nrm ls

   * npm -------- https://registry.npmjs.org/
     yarn ------- https://registry.yarnpkg.com/
     cnpm ------- http://r.cnpmjs.org/
     taobao ----- https://registry.npm.taobao.org/
     nj --------- https://registry.nodejitsu.com/
     npmMirror -- https://skimdb.npmjs.com/registry/
     edunpm ----- http://registry.enpmjs.org/
   ```
3. 更换`cnpm`
   ```
   [root@instance ~]# nrm use cnpm   
      Registry has been set to: http://r.cnpmjs.org/
   ```
4. 验证
   ```
   [root@instance ~]# cnpm --version
   cnpm@6.2.0 (/opt/node/lib/node_modules/cnpm/lib/parse_argv.js)
   ```
