在我们的日常开发中经常会遇到这种情况:手上有好几个项目,每个项目的需求不同,进而不同项目必须依赖不同版的 NodeJS 运行环境。如果没有一个合适的工具,这个问题将非常棘手。

nvm​ 应运而生,nvm 是 Mac 下的 node 管理工具,有点类似管理 Ruby 的 rvm,如果需要管理 Windows 下的 node,官方推荐使用 nvmw​ 或 nvm-windows。不过,nvm-windows 并不是 nvm 的简单移植,他们也没有任何关系。但下面介绍的所有命令,都可以在 nvm-windows 中运行。


这里只提供window安装方法,其他系统请参考 这里是对安装方法的一些总结和经验,欢迎参考

简而言之,使用nvm可以切换不同node和npm版本,更多nvm方法在最底部


第一步

首先最重要的是:一定要卸载已安装的 NodeJS,否则会发生冲突。

首先打开nodejs所在目录,找到卸载文件文件双击中卸载即可,卸载后把没有卸载掉的文件进行删除,

打开系统设置删除环境变量,点击确定-确定。(我这里演示,所以最后点了取消)

【Nodejs】使用 nvm 管理不同版本的 node 与 npm,与nodjs安装方法_nvm


然后下载 nvm-windows 最新安装包,

【Nodejs】使用 nvm 管理不同版本的 node 与 npm,与nodjs安装方法_nodesj_02


下载nvm-setup.zip直接安装即可。



第二步

安装nvm的时候会让你选择两个安装路径,第一个是nvm的安装目录,也就是根目录,第二个是nodejs版本的目录,

这里我都选择安装在了D盘

【Nodejs】使用 nvm 管理不同版本的 node 与 npm,与nodjs安装方法_安装方法_03



第三步

安装完成后打开cmd控制台,

(nodejs版本会持续更新,所以大家可以进入官网查看版本号,或者通过命令 nvm ls available 查看最新nodejs版本  )

通过以下命令进行安装


nvm install 10.16.2


卸载为nvm uninstall 10.16.2


如果安装失败可以切换成淘宝源


进入nvm安装目录,修改settings.txt的内容为:



root: D:\nvm
path: D:\nodejs
arch: 64
proxy: none
node_mirror: http://npm.taobao.org/mirrors/node/
npm_mirror: https://npm.taobao.org/mirrors/npm/




【Nodejs】使用 nvm 管理不同版本的 node 与 npm,与nodjs安装方法_nodesj_04


 这里已经安装过了,所以直接显示already installed


此时就可以进行切换nodejs版本了,

如我现在是10.16.2    要切换到12.8.0,代码如下



nvm use 12.8.0


 如果执行use失败报错exit status 1:乱码,则需要以管理员身份运行cmd


【Nodejs】使用 nvm 管理不同版本的 node 与 npm,与nodjs安装方法_nodesj_05




第四步

并不是说NodeJS和NPM安装好了以后就能直接使用了,这也是新手经常犯的一个错误之一。

因为默认情况下,NPM安装的模块并不会安装到NodeJS的程序目录,比如上面安装的时候我们设置的D:\nodejs\目录,

而是直接安装到了C:\Users\Administrator目录下


这里我们要分两步,第一步修改NPM的缓存目录和全局目录路径,将对应的模块目录改到D盘nodejs的安装目录,第二步是配置npm和nodejs的环境变量,这样nodejs才能正确地调用对应的模块。

我们先来做第一步,在D盘nodejs目录下创建两个目录,分别是node_cache和node_global,这是用来放安装过程的缓存文件以及最终的模块配置位置。配置完成后,执行下面这两个命令:


npm config set prefix "D:\nodejs\node_global"



npm config set cache "D:\nodejs\node_cache"


(如果配置后不想默认安装到这个位置,可以在c盘全局搜索 .npmrc 文件,把这个代码删除即可)

将npm的全局模块目录和缓存目录配置到我们刚才创建的那两个目录:

 【Nodejs】使用 nvm 管理不同版本的 node 与 npm,与nodjs安装方法_环境变量_06

【Nodejs】使用 nvm 管理不同版本的 node 与 npm,与nodjs安装方法_环境变量_07


然后我们打开cmd命令行界面,在使用命令安装刚才的cluster模块,命令如下:


npm install cluster -g


然后打开刚才创建的node_global目录,可以看到此时cluster目录就安装到这个目录底下了。

【Nodejs】使用 nvm 管理不同版本的 node 与 npm,与nodjs安装方法_环境变量_08




第五步




安装全局npm

安装node的时候,npm其实也已经一起安装了。因为nvm可以管理多个版本的node,如果每次添加一个node版本都要安装一堆的包很麻烦,如果有一个npm可以让各个版本的node共用,就不会这么麻烦了,这就是为什么我们要配置一个全局的npm的原因。简单的三步就可以配置一个全局的npm






然后我们来配置npm的环境变量和nodejs的环境变量。在计算机图标上点右键,选属性,然后点击高级系统配置,

弹出来的新窗口右下角有个环境路径,点击去,就能看到环境路径的配置界面,我们点击新建。然后在弹出来的窗口里,

变量名填:NODE_PATH

变量值填:D:\nodejs\node_modules\

填写好后点确定,然后就能看到我们配置好的NPM环境路径。

【Nodejs】使用 nvm 管理不同版本的 node 与 npm,与nodjs安装方法_nvm_09


此时还需要修改一些nodejs默认的模块调用路径,因为模块的安装位置变了,如果nodejs的命令还到原来的位置去找,

肯定是找不到安装的模块了。我们在环境变量窗口,选择Path,然后点击右下角的编辑,然后选择npm那个。

点击右边的编辑,将其修改为:D:\nodejs

然后点确定,保存这个配置。

 【Nodejs】使用 nvm 管理不同版本的 node 与 npm,与nodjs安装方法_nvm_10

这个时候所有的配置工作才算完成了,然后打开一个新的cmd窗口。先输入命令:


node


进入nodejs的交互式命令控制台,然后输入:


require('cluster')


如果能正常输出cluster模块的信息,说明上面的所有配置就算生效了。

【Nodejs】使用 nvm 管理不同版本的 node 与 npm,与nodjs安装方法_环境变量_11




 第六步

我们还需要做的最后一个工作是,将npm的模块下载仓库从默认的国外站点改为国内的站点,这样下载模块的速度才能比较快,只需要一个命令即可,命令是:

(记得先按两下Ctrl+c退出nodejs)


npm install cluster --registry https://registry.npm.taobao.org


上面的命令是临时使用淘宝镜像的地址来安装cluster模块。速度非常快。只用了不到0.8秒。

而我们上面第一次安装的时候用了差不多3秒多,速度快了3倍多。


如果想一直使用这个源的地址,那么可以使用下面这个命令来配置。


npm install -g cnpm --registry=https://registry.npm.taobao.org


配置好国内源后,安装一个较大的模块express,只用了不到6秒多一点,速度提升还是非常可观的


cnpm install express -g


注意,原来安装方法是npm install [name]   ,这里使用淘宝镜像后安装变成  cnpm install [name]

很多难以安装的包如​​node-sass​​等都可以用这个方法安装

如果使用cnpm失败说明 上述命令没有配置成功,请再重试一遍

这里-g的意思是全局安装


至此,nodejs和npm在windows上的配置就全部完毕。








以下是通过nvm切换nodejs版本的命令

安装多版本 node/npm

例如,我们要安装4.2.2版本,可以用如下命令:


nvm install 4.2.2



nvm 遵守​​语义化版本​​命名规则。例如,你想安装最新的 4.2 系列的最新的一个版本的话,可以运行:


nvm install 4.2



nvm 会寻找 4.2.x 中最高的版本来安装。

你可以通过以下命令来列出远程服务器上所有的可用版本:


nvm ls-remote



Windows 的话,就是:


nvm ls available




在不同版本间切换

每当我们安装了一个新版本 Node 后,全局环境会自动把这个新版本设置为默认。

nvm 提供了 nvm use 命令。这个命令的使用方法和 install 命令类似。

例如,切换到 4.2.2:


nvm use 4.2.2



切换到最新的 4.2.x:


nvm use 4.2



切换到 iojs:


nvm use iojs-v3.2.0



切换到最新版:


nvm use node



每次执行切换的时候,系统都会把 node 的可执行文件链接放到特定版本的文件上。

我们还可以用 nvm 给不同的版本号设置别名:


nvm alias awesome-version 4.2.2



我们给 4.2.2 这个版本号起了一个名字叫做 awesome-version,然后我们可以运行:


nvm use awesome-version



下面这个命令可以取消别名:


nvm unalias awesome-version



另外,你还可以设置 default 这个特殊别名:


nvm alias default node




列出已安装实例


nvm ls



其他命令

直接运行特定版本的 Node


nvm run 4.2.2 --version



在当前终端的子进程中运行特定版本的 Node


nvm exec 4.2.2 node --version



确认某个版本Node的路径


nvm which 4.2.2



安装 Node 的其他实现,例如 iojs(一个基于 ES6 的 Node 实现,现在已经和 Node 合并)


nvm install iojs-v3.2.0



快捷命令:


  • nvm install node 安装最新版 Node
  • nvm install iojs 安装最新版 iojs
  • nvm install unstable 安装最新不稳定版本的 Node


 





单枪匹马你别怕,一腔孤勇又如何,这一路你可以哭,但不能怂!

——  Here are lovecode3000 ~