在装置和应用这三种工具时,咱们有很多形式能够抉择,这些办法各有优劣,每个人都有本人用起来比拟习惯的配置,所以我在这里记录下本人比拟习惯的一种装置形式与其余一些可能的选项。
NVM、NPM、Node.js的关系
假设咱们的最终目标是为了装置并应用Node.js,那么咱们有两种惯例的抉择:
- Node.js安装包
- NVM
第一种形式十分间接,搜寻Node.js,在官网下载须要的的版本并进行装置就能够了,然而个别不举荐这种形式,因为Node.js的版本泛滥,开发时不同的我的项目可能会应用不同的版本,每次面对不同的我的项目都要重新安装,版本的切换非常麻烦。
为了解决下面的问题,应用NVM是一个不错的抉择,咱们先看的NVM的全称:Node Version Manager,也就是说NVM是Node.js的版本管理器,通过NVM咱们就能够装置多个不同版本的Node.js并在须要的时候进行切换,具体的办法在上面介绍。
NVM是Node.js管理器,那么NPM呢?还是看全称:Node Package Manager,也就是Node.js包管理器,用于治理Node的大量扩大API。在装置Node.js时就会主动装置相应版本的NPM。
NVM
间接从GitHub上下载 下载地址
分成安装版(setup)和免安装版(noinstall),区别不大但如果心愿能在全局的各个文件地位都能够应用NVM、NPM和Node.js这些工具的指令,要留神应用免安装版须要自行设置环境变量
安装版(setup)
装置过程须要设置两个门路,就是环境变量相应的值,别离是NVM和Node.js的门路,倡议门路中不要有空格,装置时会主动建设环境变量。
免安装版(noinstall)设置环境变量
应用免安装版时能够配置环境变量如下:
NVM_HOME 就是NVM所在的目录,NVM_SYMLINK 则是Node.js的目录,但变量名看起来如同没什么关系,起因咱们在上面切换Node.js版本的操作方法处阐明。
验证nvm装置
装置实现后咱们能够通过nvm version
命令查看nvm的版本来验证是否曾经胜利装置。因为咱们配置了环境变量,所以能够在任意目录中执行nvm命令。
装置指定版本的Node.js
nvm install 版本号// 举例nvm install 12.19.1
命令很简略,然而在版本号的抉择上仿佛有些问题,最开始咱们就说到Node.js版本泛滥,这里我到底该抉择哪个版本呢?
咱们回过头看下Node.js的首页,能够看到两种版本
- LTS(Long-Term Support)
- Current
对于Node.js版本的成因和各种具体的阐明曾经有文章写得很明确了,官网页面也有阐明,有趣味能够去理解一下,依据 Recommended For Most Users 和 Latest Features 能够得出一个简略的论断:通常状况,为了稳固抉择LTS版本,为了尝鲜抉择Current版本。
另外值得一提的就是Node.js采纳奇偶版本号的模式,奇数为非稳定版(如9.11、15.2.1),偶数为稳定版(如10.23、12.19.1),通过这个也能够简略判断。
但既然咱们应用了nvm,难道还要每次去Node,js官网看下版本再装置吗?当然不须要,通过指令nvm list available
就能够查看近期的可用版本。
下载服务器
在开始装置之前还有一件事要留神,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指令进行装置。
此时能够先通过nvm list
指令来查看曾经装置的Node.js版本。
能够看到曾经有一个版本的Node.js被装置了,兴许这时曾经有人开始蠢蠢欲动地输出node -v
来测试Node.js的装置状况了,但此时会发现node
指令依然没有被零碎辨认,显然咱们还有什么步骤没有做,在装置步骤的最初,nvm也揭示咱们应用nvm use
指令。
输出nvm use 版本号
,例如nvm use 12.19.1
来切换Node.js到指定的版本。
能够看到提醒咱们曾经切换到对应的版本,之后能够通过nvm list
来查看以后曾经装置和正在应用的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可能就是System Link这一缩写,所以每次切换版本,Node.js的全局变量也曾经设置好了,咱们天然能够间接在各个文件地位应用node和npm指令。
NPM
对于NPM的配置咱们还能够进行一些小的调整。输出npm config ls
指令:
红线圈出的两个局部默认未修改的状况应该是在C盘的用户目录下,这两个门路是npm全局包的装置和缓存目录。在我的C盘目录比拟拮据的状况下,将全局包装置在C盘显然不太适合,所以我抉择将这两个门路改到之前nvm目录的附件,便于查看和治理,指令如下:
npm config set prefix "D:/web/package/npm_global"npm config set cache "D:/web/package/npm_cache"
接下来能够装置一个全局包试一下:
npm install vue -g
装置实现,全局查看能够看到以后的全局目录和vue曾经装置胜利:
npm ls -g
疑难
因为npm当初曾经固定包的装置目录了,即便切换Node.js版本,npm的包装置目录也依然是咱们设置的文件夹,应用npm ls -g
指令查看依然会发现之前装置的包,不晓得是否呈现依赖于不同npm版本的包互相冲突的状况,目前我还没有太多对于Node.js版本切换的实际场景,筹备日后遇到这个问题再进行一些理论的测试。