Windows下如何管理和切换nodejs版本?

一、NODEJS安装

针对NODEJS的安装,主要有安装包和压缩包两种,我记得刚开始学的时候使用安装包安装了NODEJS,但其实node.exe是纯绿色的文件,目录拷贝到哪都可以执行,所以现在还是建议下载压缩包安装;只是需手动配置一些必要的系统变量,大致配置信息有:

系统变量里添加:

NODE_DIRECTORY = `NODEJS安装所在的目录`
Path = %NODE_DIRECTORY%

用户变量里添加:

NODE_PATH = %NODE_DIRECTORY%\node_modules
NPM = %NODE_DIRECTORY%\npm-global

注:NODE_PATH的设置原因,请参考:
http://cnodejs.org/topic/4fae80c02e8fb5bc650a8360#517140dc6d38277306ceaea7

二、NPM配置

NPM会随着NODEJS一并安装,其在windows下的全局模块默认路径和缓存路径是需要我们手动更正以便于后期的管理。

npm配置的一些命令可参考官方文档,如:

1、查看npm安装目录:

npm root -g

2、 查看npm的prefix和cache路径配置信息

npm config get cache
     
npm config get prefix

3、 查看npm配置的所有信息

npm config list

分别设置prefix, cache, HOME, userconfig等相关路径,参照以下命令:

// 设置淘宝NPM镜像 http://npm.taobao.org/
npm config set registry https://registry.npm.taobao.org

npm config set HOME ${NODE_DIRECTORY}
// 须设置home,不然全局安装模块时,提示 Exit status 1错误 
// 参考https://github.com/npm/npm/issues/9122

npm config set cache ${NODE_DIRECTORY}\npm-cache
npm config set prefix ${NODE_DIRECTORY}\npm-global

注:
修改的配置信息存储位置位于当前用户目录 下 ~/.npmrc (C:\Users\Administrator\.npmrc)
参考说明:https://www.npmjs.com/files/npmrc/#files

三、切换NODEJS版本

起初学习NODEJS时,没注意到nodejs的版本之间的影响;某天升级了nodejs版本后,发现以前的项目编译时出现各种错误。
这种情况下就要切换到以前的版本,如何切换呢?
在安装过程中,我在系统变量里留了一个%NODE_DIRECTORY%变量,目的就是为了能通过该变量实现手动切换;
比如现在有两个版本,所在目录分别为:

H:\www\serverkit\vendor\nodejs - v6.10.2
H:\www\serverkit\vendor\nodejs - v11.15.0

切换到v6就只要将%NODE_DIRECTORY%变量改成对应的目录路径即可。

四、使用NVM管理和自由切换NODEJS版本

A node.js version management utility for Windows.
https://github.com/coreybutler/nvm-windows

如果使用NVM来管理NODEJS,则前面的安装内容需要逐一清理;
安装nvm时也会提示需先删除以前安装的nodejs和npm;

我暂时并没有切换到nvm,主要是怕麻烦^_^
最近@2021-02-07,还是选择使用nvm来管理node版本,以适应不同项目测试的需要;
备注一下安装NVM时的注意事项:
1、安装nvm前,清除掉NODE_DIRECTORY、 NODE_PATH、 NPM 以及以前创建的nodejs快捷链接;
2、安装nvm后,重新安装nodejs所需要的各版本

nvm list #查看已安装的版本
nvm install latest #安装最新版(15.8.0)
nvm install 7.8.0 #安装旧版

nvm use 7.8.0 #切换至旧版

nodejs各版本的发布时间:https://nodejs.org/en/download/releases/
github上有些项目没标示nodejs的版本,贸然使用最新版的nodejs可能会有很多错误;
所以建议依据项目的commit时间,来选择合适的nodejs;

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注