管理 node 版本,选择 nvm 还是 n?

来源:http://taobaofed.org/blog/2015/11/17/nvm-or-n/

引子

我本机安装着 nvm,而 node 本来一直运行在 0.x 的老版本上。后来为了跑 ES6,我将 node 切换到 4.x 的版本,并且把老版本给删掉了。

然后我就碰到了两个问题。一是 WebStorm 报错说找不到 node 解释器了。我只好去设置里面重新设置一番解释器的路径:

在我的记忆中,WebStorm 默认不需要设置 node 路径,它会去找 /usr/local/bin,即通常的 node 命令位置。而一旦使用 nvm 来安装和管理 node,甚至频繁切换的话,我们就得 手动地 指定 node 路径。

而且是如此硬编码的路径(硬编码了版本号),真不优雅……

第二个问题是,我曾经在全局安装的各种 node 模块们全都需要重新安装,因为全局模块被安装在每个 node 版本自己的沙箱中,因此它们和老版本的 node 一起被埋葬了。

事实上,这就是 nvm 的特性,然而喜不喜欢它则是另一回事儿了。

不管如何,由于发生了这些个问题,我决定稍微深入了解一下情况。

nvm 和 n

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

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

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

n

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 在其实现上是一个非常易理解的方案。

nvm

我们再来看 nvm。不同于 n,nvm 不是一个 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 那样产生类似循环依赖的问题。

如何选择?

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

  • 安装简易度。nvm 安装起来显然是要麻烦不少;n 这种安装方式更符合 node 的惯性思维。见仁见智吧。
  • 系统支持。注意, nvm 不支持 Windows
  • 对全局模块的管理。n 对全局模块毫无作为,因此有可能在切换了 node 版本后发生全局模块执行出错的问题;nvm 的全局模块存在于各自版本的沙箱中,切换版本后需要重新安装,不同版本间也不存在任何冲突。
  • 关于 node 路径。n 是万年不变的 /usr/local/bin;nvm 需要手动指定路径。

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

  1. 如果你使用 Windows,那没得选了,使用 n,或者换一台 Mac。
  2. 如果你会频繁切换 node 版本(比如本地经常测试最新版的特性,同时又要兼顾代码在生产环境的兼容性),那么从全局模块兼容性的角度考虑,只能使用 nvm。
  3. 如果你是一个轻量级的用户,不需要担心兼容性的问题,更关心 node 安装和使用上的体验,那么选择 n。

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

原文地址:https://www.cnblogs.com/shengulong/p/9343172.html

时间: 2024-10-24 21:28:37

管理 node 版本,选择 nvm 还是 n?的相关文章

【前端开发】nrm切换淘宝镜像&amp;nvm管理node版本及切换

说明:nrm是切换淘宝镜像用的,nvm是node的版本切换用的(可在自己电脑安装多个版本node,便于不同项目的支持) 一.nrm的安装及常见命令: 安装nrmnpm install -g nrm 查看镜像列表nrm ls 切换镜像nrm use taobao 在nrm添加自己的镜像地址nrm add r_name r_url 删除nrm del r_name 测试镜像的相应速度nrm test r_name 二.使用nvm管理node版本及切换 第一步:下载nvm可以到这里下载链接:https

使用nvm利器,管理node版本

node.js越来越热,应用的场景也越来越多. 但也因为是开源软件,所以具备大多数开源软件都存在的“版本问题”,版本发展很快,版本前后差异性大,老系统用新版本node跑不过,全局安装的第三方组件和node版本相关造成全局版本混乱. nvm是解决这一问题的利器. nvm是node版本管理工具,主要特点: 1.可安装多版本的node. 2.灵活切换当前的node版本. 3.以沙箱方式全局安装第三方组件到对应版本的node中. 4.通过.vnmrc文件,方便灵活地指定各应用系统所需的node版本进行运

管理node.js的nvm

我们坑同时在运行2个项目.而2个不同的项目所使用的node版本又不一样,或者是要用更新的node版本进行试验或学习.这种情况下,对于维护多个版本的node将会是一键非常麻烦的事情,而nvm就是为了解决这个问题而产生的,他可以方便的在同一台设备上进行多个node版本之间的切换,而这个正是nvm的价值所在. nvm全名node.js version management,顾名思义是一个nodejs的版本管理工具.通过它可以安装和切换不同版本的nodejs.下面列出下载.安装及使用方法. 1.下载 c

Linux 安装nvm管理node版本

一 :源码安装 $ mkdir -p /opt/nvm $ git clone https://github.com/cnpm/nvm.git /opt/nvm $ cd /opt/nvm //安装 $ ./install.sh //添加淘宝镜像地址 $ export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/dist //重启配置文件 $ source ~/.bash_profile //安装node.js $ nvm install 10.16

使用 nvm 管理不同版本的 node 与 npm

使用 nvm 管理不同版本的 node 与 npm 补充说明:Mac 下通过 brew install nvm 所安装的 nvm ,由于安装路径不同,无法正确启用.建议使用 brew uninstall nvm 卸载掉之后,通过本文的方案重新安装一次. --- 最近 NodeJS 的版本更新速度有点 Chrome 的迹象,4.0 版本没发布多久,又推出了 5.0 .升级 NodeJS 之后可以很方便的开始使用一些 ES6 的语言特性,但又会导致团队内部的 mz-fis 框架无法更新,因为它暂时只

Node.js安装教程--windows中通过安装nvmw方式安装管理node

领导找谈话,公司不好混了,说要想清楚以后发展方向啥的.就想想研究下node.js吧. 首先在知乎上看看介绍,大体了解了node.js ,百度搜索确实很多乱七八糟的,感觉还是知乎靠谱点.附上知乎的node.js的话题地址:https://www.zhihu.com/topic/19569535 然后随即找了个新手教程:http://www.runoob.com/nodejs/nodejs-install-setup.html  照着做很简单的就安装好node了.然后接着找找资料看,由于我是自己研究

安装nvm管理多版本nodejs

1.简介(什么是nvm) Node Version Manager(node版本管理器),用它在机器上安装并维护管理多个Node的版本 2.nvm临时切换(临时切换版本,只在当前终端内有效,新开终端无效.) (1) 如果您还未安装npm,那么请您先安装npm (2) 随后安装nvm: cd nvm source nvm.sh git clone https://github.com/creationix/nvm.git (3) 检查nvm安装版本 nvm --version (4) 安装指定的n

使用nvm来管理nodejs版本

nvm 是 Mac 下的 node 管理工具,有点类似管理 Ruby 的 rvm,如果是需要管理 Windows 下的 node,官方推荐是使用 nvmw 或 nvm-windows .nvm主要用来在不同的nodejs版本中切换,以便当node出新版本时,可以使用一些新的特性 nvm安装 git clone https://github.com/creationix/nvm.git ~/.nvm 然后打开 ~/.bashrc , 在其中添加: source ~/.nvm/nvm.sh 重新ss

mac 系统下nvm管理node安装遇到的问题

入职新公司架构与技术攻关组,压力超大.基于node.js架构公司基础前端框架,由于本人无知一下子把自己电脑(mac)中的node升级到6.x,但公司需要的node版本是5.x,所以要换回来,删除又麻烦,跑去问前端大神,直接说nvm管理node的切换..... 回来折腾 网上链接:https://www.5288z.com/?p=1862 操作过程中遇到bashrc权限问题,经过网上搜索,各种蛋疼.最后把brashrc拷贝出来,再把命令输入进去.再拷贝到系统文件中,ok,解决了