目前主流的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的過程當中經過各類資料總結出來的一套簡單教程,歡迎你們分享交流!