node版本管理工具nvm-Mac下安裝及使用

前言

目前主流的node版本管理工具備兩種,nvm和n。二者差別挺大的,具體分析能夠參考一下淘寶FED團隊的一篇文章:node

管理 node 版本,選擇 nvm 仍是 n?git

總的來講,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輕鬆切換node版本

在介紹使用方法前,簡單說明一下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的過程當中經過各類資料總結出來的一套簡單教程,歡迎你們分享交流!

相關文章
相關標籤/搜索