使用 nvm 安装 Node

前言

目前主流的node版本管理工具有两种,nvm和n。两者差异挺大的,具体分析可以参考一下淘宝FED团队的一篇文章:

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

总的来说,nvm有点类似于 Python 的 virtualenv 或者 Ruby 的 rvm,每个node版本的模块都会被安装在各自版本的沙箱里面(因此切换版本后模块需重新安装),因此考虑到需要时常对node版本进行切换测试兼容性和一些模块对node版本的限制,我选择了使用nvm作为管理工具,下面就来说说nvm的安装和使用过程。

安装

一开始,我像往常一样在oh-my-zsh中选择了使用Homebrew来安装nvm,完成后却发现它被全局安装了,这就造成了后面使用上的一点问题,具体问题可参考Github上的一个issue

然后我就又用Homebrew把它给卸掉了,还是决定找找看它的文档,Github上找到这里

清楚看到文档中Installation那一小节有一句Homebrew installation is not supported.,由此可见,没事儿还是要多看看文档。

正式进入安装过程:

我选择了使用curl来安装:

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

完成后nvm就被安装在了~/.nvm下啦,接下来就需要配一下环境变量了,如果你也使用了zsh的话,就需要在~/.zshrc这个配置文件中配置,否则就找找看~/.bash_profile或者~/.profile吧。

打开~/.zshrc,在最后一行加上:

export NVM_DIR="$HOME/.nvm"

[ -s"$NVM_DIR/nvm.sh"] && ."$NVM_DIR/nvm.sh"# This loads nvm

这一步的作用是每次新打开一个bash,nvm都会被自动添加到环境变量中了。

完成后输入source ~/.zshrc重新启动一下配置。

输入nvm可以看到如下信息:

➜~nvm

Node Version Manager

Note:refers to any version-like string nvm understands. This includes:

- full or partial version numbers, starting with an optional "v" (0.10, v0.1.2, v1)

- default (built-in) aliases: node, stable, unstable, iojs, system

- custom aliases you define with `nvm alias foo`

Usage:

nvm helpShow this message

nvm --versionPrint out the latest released version of nvm

nvm install [-s]Download and install a, [-s] from source. Uses .nvmrc if available

--reinstall-packages-from=When installing, reinstall packages installed in

nvm uninstallUninstall a version

nvm use [--silent]Modify PATH to use. Uses .nvmrc if available

nvm exec [--silent][] Runon. Uses .nvmrc if available

nvm run [--silent][]Run `node` onwithas arguments. Uses .nvmrc if available

nvm currentDisplay currently activated version

nvm lsList installed versions

nvm lsList versions matching a given description

nvm ls-remoteList remote versions available for install

nvm versionResolve the given description to a single local version

nvm version-remoteResolve the given description to a single remote version

nvm deactivateUndo effects of `nvm` on current shell

nvm alias []Show all aliases beginning with

nvm aliasSet an alias namedpointing to

nvm unaliasDeletes the alias named

nvm reinstall-packagesReinstall global `npm` packages contained into current version

nvm unloadUnload `nvm` from shell

nvm which []Display path to installed node version. Uses .nvmrc if available

Example:

nvm install v0.10.32Install a specific version number

nvm use 0.10Use the latest available 0.10.x release

nvm run 0.10.32 app.jsRun app.js using node v0.10.32

nvm exec 0.10.32 node app.jsRun `node app.js` with the PATH pointing to node v0.10.32

nvm alias default 0.10.32Set default node version on a shell

Note:

to remove, delete, or uninstall nvm - just remove the `$NVM_DIR` folder (usually `~/.nvm`)

至此,nvm的安装就算是告一段落了,下面我们就来看一下如何使用它来对node版本进行切换使用。

使用

其实,上述最后一步打印出的信息已经可以清楚看到nvm的全部命令。

各项命令的详细用法及含义可参考上文提到的nvm文档

接下来就轮到安装我们的主角node大哥了。

首先我们可以使用nvm ls-remote看一下node有哪些版本可以安装:

➜~nvm ls-remote

v0.1.14

v0.1.15

v0.1.16

...

Note:由于在写文章的时候网络有问题,无法展示所有结果出来,上面代码示意一下,正确情况下会显示非常多版本出来,大家都知道node更新速度非常非常快。

我常用的node版本是4.1.0,因此首先安装这个版本:

$ nvm install v4.1.0

######################################################################## 100.0%

Now using node v4.1.0

同时安装一下最新版来测试nvm的版本管理功能:

$ nvm install v5.5.0

######################################################################## 100.0%

Now using node v5.5.0

使用nvm轻松切换node版本

在介绍使用方法前,简单说明一下nvm的工作原理:

按照我上述安装方法的话,nvm会将各个版本的node安装在~/.nvm/versions/node目录下,我们可以打开这个目录看看有些什么东西:

➜~ls -a ~/.nvm/versions/node

...v4.1.0v5.5.0

事实上v4.1.0和v5.5.0这两个目录分别存放node的binary档,nvm会在$PATH前面安插指定版本的目录,透过这种方式在使用node命令时就会用指定版本的node来运行了。

可以确认实际的$PATH看看:

➜~echo $PATH

/Users/***/.nvm/versions/node/v5.5.0/bin:...

由于刚刚我们通过nvm安装node,会自动把最后安装的版本设为当前使用的版本,因此上述路径结尾会是.../v5.5.0/bin(还可通过nvm ls命令查看当前已安装的所有node版本)。

接下来我们可以使用nvm use 切换版本:

➜~nvm use v4.1.0

Now using node v4.1.0(npm v2.14.3)

➜~node -v

v4.1.0

➜~nvm use v5.5.0

Now using node v5.5.0(npm v3.3.12)

➜~node -v

v5.5.0

轻轻松松完成切换!

不过问题来了,这时如果你新打开一个bash,输入nvm current会发现显示为null,这是因为使用nvm use命令只会在当前bash里生效,重新打开一个bash你会发现$PATH的值已经不包含刚才的node目录了,要解决这个问题也很简单,使用nvm alias default 命令来指定一个默认的node版本就ok了,这里我使用了v4.1.0作为默认版本:

➜~nvm alias default v4.1.0

default -> v4.1.0

此时再打开一个bash输入nvm current就会显示为v4.1.0了。

小结

以上为我在安装nvm的过程中通过各种资料总结出来的一套简单教程,欢迎大家分享交流!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,688评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,559评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,749评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,581评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,741评论 3 271
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,684评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,122评论 2 292
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,847评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,441评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,939评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,333评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,783评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,275评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,830评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,444评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,553评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,618评论 2 249

推荐阅读更多精彩内容