最近换了家公司,配备的新电脑需要重新配置开发环境,正好也趁着这个时候,做一个总结归纳。
一、背景
由于node.js和npm版本更新迭代很快,一些npm包或者我们项目依赖的node和npm版本不同,会导致我们需要安装对应的node版本,由于卸载再重装node的操作相对繁琐,我们需要一个可安装多个node版本并实现切换的方案。
二、方案1:配置多个环境变量,通过切换环境变量的方式切换node版本
1、卸载node
如果未安装node,则无该步骤,若已经安装某版本node,则需要卸载对应node
-
如果是使用node安装包(.msi)安装过,则执行以下操作
- 进入控制面板-找到程序功能-选择node-执行卸载
- 删除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-*3. 删除环境变量中的node和npm相关引用 4. 重启任务管理器杀死所有相关进程(或者重新启动,最快)
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
3、配置系统变量
- 在系统变量中配置 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切换
注意 :
1、nvm 安装到了有空格的路径上(例如 D:\Program Files),切换 node 版本会 出现“exit status 1...”报错,因此各位安装时需要注意!
2、安装1.2.2版本的nvm 时,发现下载14以下的node版本,npm下载失败,因此切换至1.1.10版本
1、卸载已有的node
2、、下载nvm-windows安装包
nvm下载地址 :github.com/coreybutler…

3、安装
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-noinstall;改名nvm,我存放在D盘

- 新建nvm放置当前使用的node存放路径
//nvm 路径
D:\ProgramSelfFiles\nvm
// nvm放置当前使用的node存放路径
D:\ProgramSelfFiles\NodeJs
- 新建两个系统变量
NVM_HOME : D:\ProgramSelfFiles\nvm // 指向nvm.exe
NVM_SYMLINK : D:\ProgramSelfFiles\NodeJs //指向node.exe
- 在系统变量path中增加%NVM_HOME%;%NVM_SYMLINK%;

- 在nvm目录下新增settings.txt 参考github上示例
root: D:\ProgramSelfFiles\nvm //nvm地址 存放多种版本node
path: D:\ProgramSelfFiles\NodeJs //存放当前使用node
arch: 64 //表示安装的node是多少位
proxy: none //设置代理
注意 : nvm安装或者切换版本的时候,不能自动识别操作系统适合哪个版本的node,所以最好自己安装是进行声明
4、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/
5、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了

6、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路径
7、nvm 下 node 全局组件下载地 node_global、node_cache 管理
npm 全局模块的存放路径以及 cache 的路径的配置,一般默认在 C:\Users\Administrator\AppData\Roaming\npm;为方便管理,可自定义配置任意目录;由于日常开发中,node 版本对部分组件会有版本影响(例如 node-sass),因此全局组件的安装目录同时设置了针对所有 node 版本的全局组件安装目录和针对对应 node 版本的全局组件安装目录
针对 nvm 所有 node 版本的安装目录配置
与 node 版本基本无影响的全局组件,我选择存放在至 nvm 目录,在环境变量中配置,可在任意 node 版本中生效
npm config set prefix "D:\ProgramSelfFiles\nvm\node_global"
npm config set cache "D:\ProgramSelfFiles\nvm\node_cache"
配置全局插件环境变量,在 path 中添加指向地址 D:\ProgramSelfFiles\nvm\node_global,由于前面已经设置路径变量,所以可以直接拼接 %NVM_HOME%\node_global
针对 nvm 特定 node 版本的安装目录配置
与 node 版本可能有版本影响的全局组件,下载至当前 node 目录,在各自 node 版本中生效
npm config set prefix "D:\ProgramSelfFiles\nodejs\node_global"
npm config set cache "D:\ProgramSelfFiles\nodejs\node_cache"
配置特定 node 版本全局插件环境变量,在 path 中添加指向地址 D:\ProgramSelfFiles\nodejs\node_global,由于前面已经设置路径变量,所以可以直接拼接 %NVM_SYMLINK%\node_global
8、nrm(npm registry manager ) -- npm的镜像源管理工具
关于淘宝镜像,介绍一个镜像源管理工具,可以快速的切换npm的镜像源
- 全局安装nrm
npm install -g nrm
- 查看nrm 所有的镜像源地址 nrm ls;带*号的是当前使用源

- 切换镜像源 nrm use [registry]
切换淘宝镜像源

- 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> //测试镜像源下载响应时间
