nvm學習(一)簡介、安裝、常用命令


簡介

在我們的日常開發中經常會遇到這種情況:手上有好幾個項目,每個項目的需求不同,進而不同項目必須依賴不同版的 NodeJS 運行環境。如果沒有一個合適的工具,這個問題將非常棘手。

nvm 應運而生,nvm 是 Mac 下的 node 管理工具

安裝

參考:在 Mac 下安裝 nvm 管理 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 ls-remote 列出所有可安裝的版本

nvm install <version> 安裝指定的版本,如 nvm install v8.14.0

nvm uninstall <version> 卸載指定的版本

nvm ls 列出所有已經安裝的版本

nvm use <version> 切換使用指定的版本

nvm current 顯示當前使用的版本

nvm alias default <version> 設置默認 node 版本

nvm deactivate 解除當前版本綁定

注意:nvm 默認是不能刪除被設定為 default 版本的 node,特別是只安裝了一個 node 的時候,這個時候我們需要先解除當前版本綁定,然后再使用 nvm uninstall <version> 刪除

在不同版本間切換

每當我們安裝了一個新版本 Node 后,全局環境會自動把這個新版本設置為默認。

nvm 提供了 nvm use 命令。這個命令的使用方法和 install 命令類似。

例如,切換到 4.2.2:

nvm use 4.2.2

切換到最新的 4.2.x:

nvm use 4.2

切換到 iojs:

nvm use iojs-v3.2.0

切換到最新版:

nvm use node

每次執行切換的時候,系統都會把 node 的可執行文件鏈接放到特定版本的文件上。

我們還可以用 nvm 給不同的版本號設置別名:

nvm alias awesome-version 4.2.2

我們給 4.2.2 這個版本號起了一個名字叫做 awesome-version,然后我們可以運行:

nvm use awesome-version

下面這個命令可以取消別名:

nvm unalias awesome-version

另外,你還可以設置 default 這個特殊別名:

nvm alias default node

列出已安裝實例

nvm ls

上面綠色箭頭是當前正在使用的版本,下面列出的還有設置過的別名。

在多環境中,npm該如何使用呢?

每個版本的 Node 都會自帶一個不同版本的 npm,可以用 npm -v 來查看 npm 的版本。全局安裝的 npm 包並不會在不同的 Node 環境中共享,因為這會引起兼容問題。它們被放在了不同版本的目錄下,例如 ~/.nvm/versions/node/<version>/lib/node_modules</version> 這樣的目錄。這剛好也省去我們在 Linux 中使用 sudo 的功夫了。因為這是用戶的主文件夾,並不會引起權限問題。

但問題來了,我們安裝過的 npm 包,都要重新再裝一次?幸運的是,我們有個辦法來解決我們的問題,運行下面這個命令,可以從特定版本導入到我們將要安裝的新版本 Node:

nvm install v5.0.0 --reinstall-packages-from=4.2

其他命令

直接運行特定版本的 Node

nvm run 4.2.2 --version

在當前終端的子進程中運行特定版本的 Node

nvm exec 4.2.2 node --version

確認某個版本Node的路徑

nvm which 4.2.2

安裝 Node 的其他實現,例如 iojs(一個基於 ES6 的 Node 實現,現在已經和 Node 合並)

nvm install iojs-v3.2.0

快捷命令:

  • nvm install node 安裝最新版 Node
  • nvm install iojs 安裝最新版 iojs
  • nvm install unstable 安裝最新不穩定版本的 Node

參考

使用 nvm 管理不同版本的 node 與 npm

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM