目前主流的node版本管理工具备两种,nvm和n。二者差别挺大的,具体分析能够参考一下淘宝FED团队的一篇文章:node
总的来讲,nvm有点相似于 Python 的 virtualenv 或者 Ruby 的 rvm,每一个node版本的模块都会被安装在各自版本的沙箱里面(所以切换版本后模块需从新安装),所以考虑到须要时常对node版本进行切换测试兼容性和一些模块对node版本的限制,我选择了使用nvm做为管理工具,下面就来讲说nvm的安装和使用过程。github
一开始,我像往常同样在 oh-my-zsh
中选择了使用 Homebrew
来安装nvm,完成后却发现它被全局安装了,这就形成了后面使用上的一点问题,具体问题可参考 Github
上的一个 issue 。shell
而后我就又用 Homebrew
把它给卸掉了,仍是决定找找看它的文档, Github
上找到 这里 。npm
清楚看到文档中 Installation
那一小节有一句 Homebrew installation is not supported.
,因而可知,没事儿仍是要多看看文档。bash
正式进入安装过程:网络
我选择了使用 curl
来安装:app
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
完成后nvm就被安装在了 ~/.nvm
下啦,接下来就须要配一下环境变量了,若是你也使用了 zsh
的话,就须要在 ~/.bash_profile
这个配置文件中配置,不然就找找看 ~/.zshrc
或者 ~/.profile
吧。curl
打开 ~/.bash_profile
,在最后一行加上:工具
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
这一步的做用是每次新打开一个bash,nvm都会被自动添加到环境变量中了。
完成后输入 source ~/.bash_profile
从新启动一下配置。
输入 nvm
能够看到以下信息:
➜ ~ nvm Node Version Manager Note: <version> 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 help Show this message nvm --version Print out the latest released version of nvm nvm install [-s] <version> Download and install a <version>, [-s] from source. Uses .nvmrc if available --reinstall-packages-from=<version> When installing, reinstall packages installed in <node|iojs|node version number> nvm uninstall <version> Uninstall a version nvm use [--silent] <version> Modify PATH to use <version>. Uses .nvmrc if available nvm exec [--silent] <version> [<command>] Run <command> on <version>. Uses .nvmrc if available nvm run [--silent] <version> [<args>] Run `node` on <version> with <args> as arguments. Uses .nvmrc if available nvm current Display currently activated version nvm ls List installed versions nvm ls <version> List versions matching a given description nvm ls-remote List remote versions available for install nvm version <version> Resolve the given description to a single local version nvm version-remote <version> Resolve the given description to a single remote version nvm deactivate Undo effects of `nvm` on current shell nvm alias [<pattern>] Show all aliases beginning with <pattern> nvm alias <name> <version> Set an alias named <name> pointing to <version> nvm unalias <name> Deletes the alias named <name> nvm reinstall-packages <version> Reinstall global `npm` packages contained in <version> to current version nvm unload Unload `nvm` from shell nvm which [<version>] Display path to installed node version. Uses .nvmrc if available Example: nvm install v0.10.32 Install a specific version number nvm use 0.10 Use the latest available 0.10.x release nvm run 0.10.32 app.js Run app.js using node v0.10.32 nvm exec 0.10.32 node app.js Run `node app.js` with the PATH pointing to node v0.10.32 nvm alias default 0.10.32 Set 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大哥了。安装前先设置镜像(我用的淘宝镜像,如喜欢用其它镜像只需改下方的url),如下代码添加到.bash_profile
export NVM_NODEJS_ORG_MIRROR="https://npm.taobao.org/mirrors/node/" source "$NVM_DIR/nvm.sh"
首先咱们可使用 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的工做原理:
按照我上述安装方法的话,nvm会将各个版本的node安装在 ~/.nvm/versions/node
目录下,咱们能够打开这个目录看看有些什么东西:
➜ ~ ls -a ~/.nvm/versions/node . .. v4.1.0 v5.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 <version>
切换版本:
➜ ~ 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 <version>
命令来指定一个默认的node版本就ok了,这里我使用了v4.1.0
做为默认版本:
➜ ~ nvm alias default v4.1.0 default -> v4.1.0
此时再打开一个bash输入 nvm current
就会显示为 v4.1.0
了。
以上为我在安装nvm的过程当中经过各类资料总结出来的一套简单教程,欢迎你们分享交流!