共计 2985 个字符,预计需要花费 8 分钟才能阅读完成。
在装置和应用这三种工具时,咱们有很多形式能够抉择,这些办法各有优劣,每个人都有本人用起来比拟习惯的配置,所以我在这里记录下本人比拟习惯的一种装置形式与其余一些可能的选项。
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 版本切换的实际场景,筹备日后遇到这个问题再进行一些理论的测试。