node nvm
?
nvm?是 Mac 下的 node 管理工具,有點類似管理 Ruby 的 rvm,如果是需要管理 Windows 下的 node,官方推薦是使用?nvmw?或?nvm-windows?。
以下具體說下 Mac 系統中的安裝與使用細節(Windows 系統僅供類比參考)。
一、卸載已安裝到全局的 node/npm
如果之前是在官網下載的 node 安裝包,運行后會自動安裝在全局目錄,其中
node 命令在 /usr/local/bin/node ,npm 命令在全局 node_modules 目錄中,具體路徑為 /usr/local/lib/node_modules/npm
安裝 nvm 之后最好先刪除下已安裝的 node 和全局 node 模塊:
npm ls -g --depth=0 #查看已經安裝在全局的模塊,以便刪除這些全局模塊后再按照不同的 node 版本重新進行全局安裝sudo rm -rf /usr/local/lib/node_modules #刪除全局 node_modules 目錄 sudo rm /usr/local/bin/node #刪除 node cd /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm #刪除全局 node 模塊注冊的軟鏈二、安裝 nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash安裝完成后請重新打開終端環境,Mac 下推薦使用?oh-my-zsh?代替默認的 bash shell。
三、安裝切換各版本 node/npm
nvm install stable #安裝最新穩定版 node,現在是 5.0.0 nvm install 4.2.2 #安裝 4.2.2 版本 nvm install 0.12.7 #安裝 0.12.7 版本 # 特別說明:以下模塊安裝僅供演示說明,并非必須安裝模塊 nvm use 0 #切換至 0.12.7 版本 npm install -g mz-fis #安裝 mz-fis 模塊至全局目錄,安裝完成的路徑是 /Users/<你的用戶名>/.nvm/versions/node/v0.12.7/lib/mz-fis nvm use 4 #切換至 4.2.2 版本 npm install -g react-native-cli #安裝 react-native-cli 模塊至全局目錄,安裝完成的路徑是 /Users/<你的用戶名>/.nvm/versions/node/v4.2.2/lib/react-native-cli nvm alias default 0.12.7 #設置默認 node 版本為 0.12.7四、使用 .nvmrc 文件配置項目所使用的 node 版本
如果你的默認 node 版本(通過 nvm alias 命令設置的)與項目所需的版本不同,則可在項目根目錄或其任意父級目錄中創建 .nvmrc 文件,在文件中指定使用的 node 版本號,例如:
cd <項目根目錄> #進入項目根目錄 echo 4 > .nvmrc #添加 .nvmrc 文件 nvm use #無需指定版本號,會自動使用 .nvmrc 文件中配置的版本 node -v #查看 node 是否切換為對應版本五、nvm 與 n 的區別
node 版本管理工具還有一個是?TJ 大神的 n?命令,n 命令是作為一個 node 的模塊而存在,而 nvm 是一個獨立于 node/npm 的外部 shell 腳本,因此?n 命令相比 nvm 更加局限。
由于 npm 安裝的模塊路徑均為 /usr/local/lib/node_modules ,當使用 n 切換不同的 node 版本時,實際上會共用全局的 node/npm 目錄。?因此不能很好的滿足『按不同 node 版本使用不同全局 node 模塊』的需求。
因此建議各位盡早開始使用 nvm ,以免出現全局模塊無法更新的問題
?
目前主流的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?可以看到如下信息:
? ~ nvmNode Version ManagerNote: <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-remotev0.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的過程中通過各種資料總結出來的一套簡單教程,歡迎大家分享交流!
轉載于:https://www.cnblogs.com/hujihon/p/6377558.html
總結
- 上一篇: perf stat 输出解读
- 下一篇: 使用 Feed43