在安装和使用这三个工具的时候,我们有很多种方式可以选择。这些方法中的每一种都有其自身的优点和缺点。这里我记录下我比较习惯的一种安装方式和其他一些可能的选择。NVM、NPM、Node.js的关系假设我们的最终目的是安装和使用Node.js,那么我们有两种常规的选择:Node.js安装包NVM第一种方式很直接,搜索Node.js,从官网下载需要的版本安装即可,但是一般不推荐这种方式,因为Node.js的版本很多,不同的项目在开发的时候可能会使用不同的版本。要重装,版本切换很麻烦。为了解决以上问题,使用NVM是一个不错的选择。我们先来看一下NVM的全称:NodeVersionManager,也就是说NVM就是Node.js的版本管理器。通过NVM,我们可以安装多个不同的版本。Node.js和需要的时候switch,下面介绍具体方法。NVM是Node.js管理器,那么NPM呢?还是看全称:NodePackageManager,也就是Node.js的包管理器,用来管理Node的大量扩展API。安装Node.js时会自动安装相应版本的NPM。NVM直接从GitHub下载。下载地址分为安装版(setup)和免安装版(noinstall)。区别不大,但是如果你希望能够在各个全局文件位置使用NVM、NPM、Node.js等工具的指令,需要注意的是在使用的时候需要自己设置环境变量免安装版本。安装版(setup)在安装过程中需要设置两个路径,分别是环境变量对应的值。环境变量是自动创建的。noinstall版本(noinstall)设置环境变量使用noinstall版本时,可以配置环境变量如下:NVM_HOME是NVM所在的目录,NVM_SYMLINK是Node.js的目录,不过变量名好像无关紧要,因为下面我们切换Node.js版本的操作方法在这里进行说明。验证nvm安装安装完成后,我们可以通过nvmversion命令查看nvm的版本,验证是否安装成功。由于我们配置了环境变量,所以我们可以在任意目录下执行nvm命令。安装指定版本的Node.jsnvminstallversionnumber//比如nvminstall12.19.1命令很简单,但是在版本号的选择上似乎有些问题。一开始我们说了Node.js有很多版本。这里我应该选择Whichversion?我们回头看看Node.js的主页,可以看到有两个版本的LTS(Long-TermSupport)Current。关于Node.js版本的原因和各种具体说明,已经有文章写得很清楚了,官网页面也有Note,有兴趣的可以去看看。根据RecommendedForMostUsers和LatestFeatures,你可以得出一个简单的结论:通常情况下,稳定性选择LTS版本,早期采用者选择Current版本。另外值得一提的是,Node.js采用奇偶版本号的形式,奇数为不稳定版本(如9.11、15.2.1),偶数为稳定版本(如10.23、12.19.1),这也很容易判断。但是既然用了nvm,是不是每次都要去Node和js的官网查看版本再安装呢?当然不是,你可以通过命令nvmlistavailable查看最近可用的版本。在开始安装下载服务器之前,还需要注意一件事。npm和Node.js的默认下载服务器都在国外。在国内下载的时候经常会出现速度慢的问题。我们可以通过配置成淘宝镜像来解决。在安装目录下,我们可以找到一个名为settings.txt的文件,打开,在末尾添加两行,将Node.js和npm的下载服务器地址替换为服务器国内淘宝镜像:node_mirror:https://npm.taobao.org/mirrors/node/npm_mirror:https://npm.taobao.org/mirrors/npm/切换Node.js版本获取版本号执行上面的install命令进行安装。此时可以先通过nvmlist命令查看安装的Node.js版本。可以看到已经安装了一个版本的Node.js。可能已经有人开始输入node-v来测试Node.js的安装了,但是这时候你会发现node命令仍然无法被系统识别。显然我们还有一些步骤要做。在安装步骤的最后,nvm还提醒我们使用nvmuse命令。输入nvmuse的版本号,例如nvmuse12.19.1,将Node.js切换到指定版本。可以看到我们已经切换到了对应的版本,然后可以通过nvmlist查看当前安装和使用的Node.js版本。使用中的Node.js版本标有星号。此时我们可以使用我们熟悉的命令来检查Node.js和npm的安装情况。关于nvm版本切换的本质,在我第一次使用nvm的时候,遇到了一些特殊情况导致版本切换功能失效。趁着这个问题,我观察了一下nvm的安装目录,发现了端倪。大家应该还记得,我们第一次安装nvm的时候,选择了两个路径,一个是nvm的路径,一个是Node.js的路径,但是直到我们安装了第一个版本的Node.js,这个文件夹才是也处于未使用状态。此时查看nvm安装目录,可以看到已经创建了一个对应版本号的文件夹,里面有对应版本的Node.js文件,每个版本对应一个文件夹。切换版本时你是怎么做到的?如果使用普通权限的命令提示符行切换版本,我们会发现系统提示cmd申请管理员权限,同意操作后查看之前的nodejs文件夹:图标变了,应该是可以猜猜左下角的标记此时,可能要用Windows系统中的快捷方式来实现这个操作。右键-属性查看是否如期:这个文件夹现在已经成为nvm目录下对应版本文件夹的快捷方式了。切换版本正是在进行创建或修改快捷方式的操作。并且我们可以回忆一下初始安装时设置的系统变量。nodejs目录下使用的SYMLINK可能是SystemLink的缩写,所以每次版本切换的时候,Node.js的全局变量也都设置好了。自然地,我们可以直接在各个文件位置使用node和npm指令。NPM关于NPM的配置,我们也可以做一些小的调整。输入npmconfigls命令:红圈圈出的两部分如果不修改,默认应该在C盘的用户目录下。这两个路径是npm全局包的安装目录和缓存目录。在我的C盘目录比较紧张的情况下,把全局包安装在C盘显然不合适,所以我选择把这两个路径改成之前nvm目录的附件,方便查看和管理。命令如下:npmconfigsetprefix"D:/web/package/npm_global"npmconfigsetcache"D:/web/package/npm_cache"接下来可以安装一个全局包试试:npminstallvue-g安装完成,可以看到当前全局视图已经成功安装了vue的全局目录和vue:npmls-g存疑由于npm固定了包安装目录,即使切换了Node.js版本,npm包安装目录还是我们设置的文件夹,使用npmls-g命令查看还是会找到之前安装的包。不知道依赖不同npm版本的包之间会不会有冲突。目前关于Node.js版本切换的实际场景我没有太多。我打算以后遇到这个问题。做一些真实的测试。
