node 多版本切换的实现方案及nvm的使用

6,146 阅读5分钟

最近换了家公司,配备的新电脑需要重新配置开发环境,正好也趁着这个时候,做一个总结归纳。

背景

由于node.js和npm版本更新迭代很快,一些npm包或者我们项目依赖的node和npm版本不同,会导致我们需要安装对应的node版本,由于卸载再重装node的操作相对繁琐,我们需要一个可安装多个node版本并实现切换的方案。

方案1:配置多个环境变量,通过切换环境变量的方式切换node版本

卸载node

如果未安装node,则无该步骤,若已经安装某版本node,则需要卸载对应node

  • 如果是使用node安装包(.msi)安装过,则执行以下操作

    1. 进入控制面板-找到程序功能-选择node-执行卸载
    2. 删除node相关的文件
    C:\Program Files (x86)\Nodejs
    C:\Program Files\Nodejs
    C:\Users\{User}\AppData\Roaming\npm(或%appdata%\npm)
    C:\Users\{User}\AppData\Roaming\npm-cache(或%appdata%\npm-cache)
    C:\Users\{User}\.npmrc(并且可能检查没有.前缀的那个)
    C:\Users\{User}\AppData\Local\Temp\npm-*
    
    1. 删除环境变量中的node和npm相关引用
    2. 重启任务管理器杀死所有相关进程(或者重新启动,最快)

下载多个node绿色安装包

直接下载node绿色安装包,我一般在node大版本8、10、12中各选一个稳定的版本,我下载的分别是node-v8.17.0-win-x64..zip、node-v10.22.1-win-x64.zip、node-v12.19.0-win-x64.zip

配置系统变量

  • 在系统变量中配置 node_8、node_10、node_12三个变量,地址分别指向对应版本的node绿色安装包

  • 在系统变量中设置变量node_global,值指向我们上一步定义的某一个node版本的变量

  • 在系统变量path后面添加变量 %node_global%

  • 命令行修改系统变量(由于path中的node路径未生效,所以目前都是手动更改node_global的值)

// 命令行修改系统变量
set node_global=%node_10%
echo %node_global%  //当前node_global 地址

echo %path%  //当前path地址

  • 命令行修改系统变量只在当前cmd窗口生效

方案2 : 使用nvm实现多版本node切换

卸载已有的node

下载nvm-windows安装包

nvm下载地址 :github.com/coreybutler…

安装

nvm-setup 程序安装步骤

  • 解压 nvm-setup.zip,,双击nvm-setup.exe安装,

  • 设置nvm安装目录,默认路径C:\Users\wangyue\AppData\Roaming\nvm,这里我加到D盘

  • 设置node的安装路径,默认路径:C:\Program Files\nodejs,这里我加到D盘

  • 安装成功后,输入nvm -v,输出版本号则安装成功

nvm-setup绿色免装版

  • 新建nvm放置当前使用的node存放路径
//nvm 路径
D:\Program Files\nvm
// nvm放置当前使用的node存放路径
D:\Program Files\NodeJs
  • 新建两个系统变量
NVM_HOME : D:\Program Files\nvm  // 指向nvm.exe
NVM_SYMLINK : D:\Program Files\NodeJs  //指向node.exe

  • 在系统变量path中增加%NVM_HOME%;%NVM_SYMLINK%;

root: D:\Program Files\nvm  //nvm地址 存放多种版本node
path: D:\Program Files\NodeJs  //存放当前使用node
arch: 64  //表示安装的node是多少位
proxy: none  //设置代理

注意 : nvm安装或者切换版本的时候,不能自动识别操作系统适合哪个版本的node,所以最好自己安装是进行声明

nvm 设置淘宝镜像

node_mirror是更改nvm下载node时的镜像,不设置则默认nodejs.org/dist/

npm_mirror是更改npm下载依赖包的镜像,不设置则默认github.com/npm/npm/arc….

  • 方法一,使用cmd命令
nvm node_mirror: https://npm.taobao.org/mirrors/node/
nvm npm_mirror: https://npm.taobao.org/mirrors/npm/
  • 方法二,修改setting.txt
//setting.txt
node_mirror: https://npm.taobao.org/mirrors/node/  
npm_mirror: https://npm.taobao.org/mirrors/npm/

nvm切换node版本

  • 使用nvm list available;查看可安装的node版本

  • 使用nvm install [version] 安装对应版本的node;我下载了8.17.0、10.22.1、12.19.0三个版本

  • 使用nvm use [version] 切换指定版本 在这里,我出现了“exit status 1...”报错,原因是我把nvm安装到了有空格的路径上(D:\Program Files),导致切换失败,切换至没有空格的路径上即可,放入需要重新配置系统变量以及setting.text了

nvm相关命令说明

nvm install 安装最新版本nvm
nvm version/nvm current 查看当前nvm的版本
nvm list available:查看可安装的node版本
nvm list/nvm ls 查看已经安装的版本
nvm install <version>  安装特定的node版本
nvm uninstall <version> 卸载特定的node版本
nvm use <version> ## 切换使用指定的版本node
nvm use [version] [arch] 切换制定的node版本和位数
nvm reinstall-packages <version> ## 在当前版本node环境下,重新全局安装指定版本号的npm包


nvm on 打开nodejs控制
nvm off 关闭nodejs控制
nvm alias <name> <version> ## 给不同的版本号添加别名
nvm unalias <name> ## 删除已定义的别名
nvm proxy 查看设置与代理
nvm node_mirror [url] 设置setting.txt中的node_mirror,如果不设置的默认是 https://nodejs.org/dist/
nvm npm_mirror [url]设置setting.txt中的npm_mirror,如果不设置的话默认的是: https://github.com/npm/npm/archive/.
nvm root [path] 设置和查看root路径

nrm(npm registry manager ) -- npm的镜像源管理工具

关于淘宝镜像,介绍一个镜像源管理工具,可以快速的切换npm的镜像源

  • 全局安装nrm
npm install -g nrm
  • 查看nrm 所有的镜像源地址 nrm ls;带*号的是当前使用源

image

  • 切换镜像源 nrm use [registry]

切换淘宝镜像源

image

  • nrm 命令
nrm -h /nrm -help  // 列出nrm的相关命令、信息
nrm -V             // nrm版本
nrm ls             // 列出nrm所有的镜像源地址
nrm current        // 当前使用镜像源

nrm use <registry> // 使用某个镜像源
nrm add <registry> <url> [home]   //增加镜像源;registry镜像源名;url 镜像源地址
nrm del <registry>  // 删除对应的源。
nrm test <registry>  //测试镜像源下载响应时间