node nvm
?
nvm?是 Mac 下的 node 管理工具,有點(diǎn)類似管理 Ruby 的 rvm,如果是需要管理 Windows 下的 node,官方推薦是使用?nvmw?或?nvm-windows?。
以下具體說下 Mac 系統(tǒng)中的安裝與使用細(xì)節(jié)(Windows 系統(tǒng)僅供類比參考)。
一、卸載已安裝到全局的 node/npm
如果之前是在官網(wǎng)下載的 node 安裝包,運(yùn)行后會自動安裝在全局目錄,其中
node 命令在 /usr/local/bin/node ,npm 命令在全局 node_modules 目錄中,具體路徑為 /usr/local/lib/node_modules/npm
安裝 nvm 之后最好先刪除下已安裝的 node 和全局 node 模塊:
npm ls -g --depth=0 #查看已經(jīng)安裝在全局的模塊,以便刪除這些全局模塊后再按照不同的 node 版本重新進(jìn)行全局安裝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安裝完成后請重新打開終端環(huán)境,Mac 下推薦使用?oh-my-zsh?代替默認(rèn)的 bash shell。
三、安裝切換各版本 node/npm
nvm install stable #安裝最新穩(wěn)定版 node,現(xiàn)在是 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 #設(shè)置默認(rèn) node 版本為 0.12.7四、使用 .nvmrc 文件配置項(xiàng)目所使用的 node 版本
如果你的默認(rèn) node 版本(通過 nvm alias 命令設(shè)置的)與項(xiàng)目所需的版本不同,則可在項(xiàng)目根目錄或其任意父級目錄中創(chuàng)建 .nvmrc 文件,在文件中指定使用的 node 版本號,例如:
cd <項(xiàng)目根目錄> #進(jìn)入項(xiàng)目根目錄 echo 4 > .nvmrc #添加 .nvmrc 文件 nvm use #無需指定版本號,會自動使用 .nvmrc 文件中配置的版本 node -v #查看 node 是否切換為對應(yīng)版本五、nvm 與 n 的區(qū)別
node 版本管理工具還有一個(gè)是?TJ 大神的 n?命令,n 命令是作為一個(gè) node 的模塊而存在,而 nvm 是一個(gè)獨(dú)立于 node/npm 的外部 shell 腳本,因此?n 命令相比 nvm 更加局限。
由于 npm 安裝的模塊路徑均為 /usr/local/lib/node_modules ,當(dāng)使用 n 切換不同的 node 版本時(shí),實(shí)際上會共用全局的 node/npm 目錄。?因此不能很好的滿足『按不同 node 版本使用不同全局 node 模塊』的需求。
因此建議各位盡早開始使用 nvm ,以免出現(xiàn)全局模塊無法更新的問題
?
目前主流的node版本管理工具有兩種,nvm和n。兩者差異挺大的,具體分析可以參考一下淘寶FED團(tuán)隊(duì)的一篇文章:
管理 node 版本,選擇 nvm 還是 n?
總的來說,nvm有點(diǎn)類似于 Python 的 virtualenv 或者 Ruby 的 rvm,每個(gè)node版本的模塊都會被安裝在各自版本的沙箱里面(因此切換版本后模塊需重新安裝),因此考慮到需要時(shí)常對node版本進(jìn)行切換測試兼容性和一些模塊對node版本的限制,我選擇了使用nvm作為管理工具,下面就來說說nvm的安裝和使用過程。
安裝
一開始,我像往常一樣在?oh-my-zsh?中選擇了使用?Homebrew?來安裝nvm,完成后卻發(fā)現(xiàn)它被全局安裝了,這就造成了后面使用上的一點(diǎn)問題,具體問題可參考?Github?上的一個(gè)?issue?。
然后我就又用?Homebrew?把它給卸掉了,還是決定找找看它的文檔,?Github?上找到?這里?。
清楚看到文檔中?Installation?那一小節(jié)有一句?Homebrew installation is not supported.?,由此可見,沒事兒還是要多看看文檔。
正式進(jìn)入安裝過程:
我選擇了使用?curl?來安裝:
url -o- https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash完成后nvm就被安裝在了?~/.nvm?下啦,接下來就需要配一下環(huán)境變量了,如果你也使用了?zsh?的話,就需要在?~/.zshrc?這個(gè)配置文件中配置,否則就找找看?~/.bash_profile?或者?~/.profile?吧。
打開?~/.zshrc?,在最后一行加上:
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm這一步的作用是每次新打開一個(gè)bash,nvm都會被自動添加到環(huán)境變量中了。
完成后輸入?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版本進(jìn)行切換使用。
使用
其實(shí),上述最后一步打印出的信息已經(jīng)可以清楚看到nvm的全部命令。
各項(xiàng)命令的詳細(xì)用法及含義可參考上文提到的?nvm文檔?。
接下來就輪到安裝我們的主角node大哥了。
首先我們可以使用?nvm ls-remote?看一下node有哪些版本可以安裝:
? ~ nvm ls-remotev0.1.14 v0.1.15 v0.1.16 ...Note:由于在寫文章的時(shí)候網(wǎng)絡(luò)有問題,無法展示所有結(jié)果出來,上面代碼示意一下,正確情況下會顯示非常多版本出來,大家都知道node更新速度非常非???。
我常用的node版本是4.1.0,因此首先安裝這個(gè)版本:
$ nvm install v4.1.0 ######################################################################## 100.0% Now using node v4.1.0同時(shí)安裝一下最新版來測試nvm的版本管理功能:
$ nvm install v5.5.0 ######################################################################## 100.0% Now using node v5.5.0使用nvm輕松切換node版本
在介紹使用方法前,簡單說明一下nvm的工作原理:
按照我上述安裝方法的話,nvm會將各個(gè)版本的node安裝在?~/.nvm/versions/node?目錄下,我們可以打開這個(gè)目錄看看有些什么東西:
? ~ ls -a ~/.nvm/versions/node . .. v4.1.0 v5.5.0事實(shí)上?v4.1.0?和?v5.5.0?這兩個(gè)目錄分別存放node的binary檔,nvm會在?$PATH?前面安插指定版本的目錄,透過這種方式在使用node命令時(shí)就會用指定版本的node來運(yùn)行了。
可以確認(rèn)實(shí)際的?$PATH?看看:
? ~ echo $PATH /Users/***/.nvm/versions/node/v5.5.0/bin:...由于剛剛我們通過nvm安裝node,會自動把最后安裝的版本設(shè)為當(dāng)前使用的版本,因此上述路徑結(jié)尾會是?.../v5.5.0/bin?(還可通過?nvm ls?命令查看當(dāng)前已安裝的所有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輕輕松松完成切換!
不過問題來了,這時(shí)如果你新打開一個(gè)bash,輸入?nvm current?會發(fā)現(xiàn)顯示為?null?,這是因?yàn)槭褂?nvm use?命令只會在當(dāng)前bash里生效,重新打開一個(gè)bash你會發(fā)現(xiàn)?$PATH?的值已經(jīng)不包含剛才的node目錄了,要解決這個(gè)問題也很簡單,使用?nvm alias default <version>?命令來指定一個(gè)默認(rèn)的node版本就ok了,這里我使用了?v4.1.0?作為默認(rèn)版本:
? ~ nvm alias default v4.1.0 default -> v4.1.0此時(shí)再打開一個(gè)bash輸入?nvm current?就會顯示為?v4.1.0?了。
小結(jié)
以上為我在安裝nvm的過程中通過各種資料總結(jié)出來的一套簡單教程,歡迎大家分享交流!
轉(zhuǎn)載于:https://www.cnblogs.com/hujihon/p/6377558.html
總結(jié)
- 上一篇: perf stat 输出解读
- 下一篇: 使用 Feed43