node版本管理器:nvm 和 n区别

简介: node版本管理器:nvm 和 n区别

node版本管理器:nvm 和 n区别

node 的版本管理工具中,nvm 自然声名远扬,然而我们也不能忘了来自 TJn。这两种,是目前最主流的方案。

关于这两个工具如何安装和使用,这里不再多说,请见它们各自的主页:

接下来我们着重关注一下 nvmn 的运作机制和特性。

n

  • n 依赖于 node

n 是一个需要全局安装的 npm package

npm install -g n

这意味着,我们在使用 n 管理 node 版本前,首先需要一个 node 环境。我们或者用 Homebrew 来安装一个 node,或者从官网下载 pkg 来安装,总之我们得先自己装一个 node——n本身是没法给你装的。

然后我们可以使用 n来安装不同版本的node。在安装的时候,n会先将指定版本的node存储下来,然后将其复制到我们熟知的路径/usr/local/bin,非常简单明了。当然由于n会操作到非用户目录,所以需要加 sudo 来执行命令。

所以这样看来,n 在其实现上是一个非常易理解的方案。

but ,n会出现全局模块无法更新的问题

nvm

我们再来看 nvm。不同于 nnvm 不是一个 npm package,而是一个独立软件包。这意味着我们需要单独使用它的安装逻辑:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash

或者使用 Homebrew 来安装。安装完后,还需要修改一下 shell 配置(~/.zshrc or whatever),具体参见官方文档。

然后我们可以使用 nvm 来安装不同版本的 node

在安装的时候,nvm 将不同的 node 版本存储到 ~/.nvm/<version>/ 下,然后修改 $PATH,将指定版本的node路径加入,这样我们调用的 node 命令即是使用指定版本的 node

nvm 显然比 n 要复杂一些,但是另一方面,由于它是一个独立软件包,因此它和 node 之间的关系看上去更合乎逻辑:nvm 不依赖 node 环境,是 node 依赖 nvm;而不像 n 那样产生类似循环依赖的问题。

  • 如何选择?

这样看下来,nvmn 的差异还是比较大的,具体体现在:

  • 安装简易度。nvm 安装起来显然是要麻烦不少;n 这种安装方式更符合 node 的惯性思维。见仁见智吧。
  • 系统支持。注意, nvm 不支持 Windows
  • 对全局模块的管理。n 对全局模块毫无作为,因此有可能在切换了 node 版本后发生全局模块执行出错的问题;

nvm 的全局模块存在于各自版本的沙箱中,切换版本后需要重新安装,不同版本间也不存在任何冲突。

关于 node 路径。n 是万年不变的 /usr/local/bin;nvm 需要手动指定路径。

所以,如何选择?真心见仁见智了,不过这里可以给出大体的建议:

1. 如果你使用 Windows,那没得选了,使用 n,或者换一台 Mac

2. 如果你会频繁切换 node 版本(比如本地经常测试最新版的特性,同时又要兼顾代码在生产环境的兼容性),那么从全局模块兼容性的角度考虑,只能使用 nvm

3. 如果你是一个轻量级的用户,不需要担心兼容性的问题,更关心 node 安装和使用上的体验,那么选择 n

4. 你如果要问,博主最终选用了谁?我会说,我选择了更流行的那一个。

目录
相关文章
|
2月前
【Node】Mac多版本Node切换
【Node】Mac多版本Node切换
54 1
|
2月前
|
移动开发 JavaScript 前端开发
为了学习vue3,安装nvm进行node的多版本管理
为了学习vue3,安装nvm进行node的多版本管理
88 2
|
2月前
|
资源调度 JavaScript Linux
nvm, node.js, npm, yarn 安装配置
nvm, node.js, npm, yarn 安装配置
99 1
|
2月前
|
资源调度 jenkins 持续交付
jenkins 自动安装nodejs16.16.0版本报错处理
jenkins 自动安装nodejs16.16.0版本报错处理
99 0
|
7天前
Node历史版本下载及配置npm镜像
Node历史版本下载及配置npm镜像
26 1
|
1天前
|
Windows 内存技术
nvm 管理和切换 node版本(windows操作系统)
nvm 管理和切换 node版本(windows操作系统)
5 0
|
6天前
|
JavaScript Linux
Linux安装nodejs指定版本
Linux安装nodejs指定版本
8 0
|
15天前
|
Web App开发 JavaScript 前端开发
nvm和Node.js的一些特点
nvm和Node.js的一些特点
11 0
|
2月前
node node-sass sass-loader版本对应问题,对于npm编译大家经常遇到这个问题
node node-sass sass-loader版本对应问题,对于npm编译大家经常遇到这个问题
40 2
|
28天前
|
前端开发
windows10 安装node npm 等前端环境 并配置国内源
windows10 安装node npm 等前端环境 并配置国内源
46 3