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上的一個issueshell

而後我就又用Homebrew把它給卸掉了,仍是決定找找看它的文檔,Github上找到這裏npm

清楚看到文檔中Installation 那一小節倒數第二行有一句Homebrew installation is not supported.,因而可知,沒事兒仍是要多看看文檔。bash

正式進入安裝過程:網絡

我選擇了使用curl方式來安裝:app

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

完成後nvm就被安裝在了~/.nvm下啦,接下來就須要配一下環境變量了,若是你也使用了zsh的話,就須要在~/.zshrc這個配置文件中配置,不然就找找看~/.bash_profile或者~/.profile吧。curl

打開~/.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: <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大哥了。

首先咱們可使用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.0v5.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的過程當中經過各類資料總結出來的一套簡單教程,歡迎你們分享交流!

相關文章
相關標籤/搜索