使用nvm利器,管理node版本

来源:http://www.cnblogs.com/kongxianghai/archive/2016/07/14/5660101.html
-Advertisement-
Play Games

node.js越來越熱,應用的場景也越來越多。 但也因為是開源軟體,所以具備大多數開源軟體都存在的“版本問題”,版本發展很快,版本前後差異性大,老系統用新版本node跑不過,全局安裝的第三方組件和node版本相關造成全局版本混亂。 nvm是解決這一問題的利器。 nvm是node版本管理工具,主要特點 ...


node.js越來越熱,應用的場景也越來越多。

但也因為是開源軟體,所以具備大多數開源軟體都存在的“版本問題”,版本發展很快,版本前後差異性大,老系統用新版本node跑不過,全局安裝的第三方組件和node版本相關造成全局版本混亂。

nvm是解決這一問題的利器。

nvm是node版本管理工具,主要特點:

1.可安裝多版本的node。

2.靈活切換當前的node版本。

3.以沙箱方式全局安裝第三方組件到對應版本的node中。

4.通過.vnmrc文件,方便靈活地指定各應用系統所需的node版本進行運行。

可惜目前只支持linux,OS系統。

接下來,就見證一下它的能力。 

 

安裝nvm

通過下麵的命令可進行一步到位的安裝,下麵兩種方式可二選一。

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

或者:

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.2/install.sh | bash

 

安裝完後,驗證安裝

command -v nvm

預設會在“/home/個人賬戶”目錄下會生成.nvm的隱藏目錄,所有的node會以沙箱的方式裝到該目錄下。

安裝完成。

 

詳細可參考官方:https://github.com/creationix/nvm 

 

安裝多版本node

在命令行中運行命令,安裝當前最新的穩定版。

nvm install stable

當前最新的穩定版是6.3.0。

 

運行命令,指明版本,安裝早期的版本0.12.4。

nvm install 0.12.4

  

安裝後,當前使用的node版本預設為最後一次安裝的版本,在命令行中運行命令可查看當前版本。

nvm current

 

切換node版本

運行命令切換。

nvm use 6

 

顯示所有安裝的版本

運行命令,列出所有版本。

nvm ls

 

左邊有箭頭的代表當前使用中的版本。

 

安裝全局組件 

非nvm管理的情況下,全局組件是安裝到/usr/local/lib/node_modules下,然後通過軟連接的方式把包中bin目錄下的可執行文件鏈接到/usr/local/bin。不管用什麼版本都裝到這些目錄下,多版本就沒法玩了。

在nvm管理下,以沙箱的方式,全局組件會裝到.nvm目錄的當前版本node下,也就是裝在nvm這個沙箱里,跟在指定版本的node下,當前有什麼版本的node,就有對應的全局組件。這是nvm強大的地方,在多運行環境的管理和切換極為好用。

下麵,運行命令在當前6.3.0的node版本下以全局的方式安裝express生成器。

npm install -g express-generator

express -V

可以清楚的看到express生成器被安裝到了當前版本的node目錄下。

express預設用的是最新的版本,這裡是4.13.4。

 

現在,切換到0.12.4版本 

nvm use 0

然後,全局安裝express生成器3.0版。

npm install -g express-generator@3

也可以清楚的看到express生成器裝到了0.12.4版node目錄下,裝完後express版本是3.0.0。

可以再將node版本切換到6,那麼當前的express版本又會切換成對應的版本。

很方便,很強大。

 

使用.nvmrc文件運行

在伺服器上很多時候會運行多個應用系統,每個應用系統使用的node版本是不一樣的,老系統用0.12.x甚至0.10.x,新系統用了新特新所以用最新的node版本,都很實際很正常。 

為了讓不同的應用系統使用各自所需的node版本運行,我們只需在各應用系統內的根目錄里生成一個.nvmrc文件,在其內寫一個版本號,利用nvm run <系統啟動文件>的方式運行系統,即可完成要求。

做個實驗。

建個demo的文件夾,在其下寫一個app1.js文件,其內容為:

console.log(process.versions);

只有一行代碼,把當前運行的node版本輸出到控制台。

 

與app1.js同級,寫一個.nvmrc文件,其中的版本號寫“0”,目的是要在0.12.4版本下運行,可以用命令:

echo '0' > .nvmrc

 

我們將當前的node版本切至6,然後運行:

nvm use 6
nvm run app1.js

運行效果:

可以看到運行demo的node版本取決於.nvmrc中寫的版本。

通過.nvmrc作為運行版本配置,用nvm run命令進行啟動的方式可以方便的完成同一個伺服器運行多個不同版本的應用系統,非常方便靈活。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在實際的項目里,ajax的應用頻率很高,所以儘管jquery或者其他的一些類似的js庫做了非常不錯的封裝,仍然有進一步封裝簡化的空間和必要 舉一個例子,很久很久以前,我的ajax是這麼寫的: 乍一看挺好沒啥問題,但是其實success回調里的邏輯可能很複雜,甚至可能會出現ajax回調里再放一個aja ...
  • [1]條件 [2]逗號 [3]賦值 [4]() [5]void ...
  • cubic-bezier即為貝茲曲線中的繪製方法。圖上有四點,P0-3,其中P0、P3是預設的點,對應了[0,0], [1,1]。而剩下的P1、P2兩點則是我們通過cubic-bezier()自定義的。cubic-bezier(x1, y1, x2, y2) 為自定義,x1,x2,y1,y2的值範圍 ...
  • 希望這篇博客可以對你有所幫助,如果有什麼技術上的問題,希望我們可以做進一步的交流,如果你覺得我哪裡闡述的不正確或者你有更好的更透徹的理解,也可以聯繫我,我在這裡隨時等著你。 對於css/html是每個前端必經之路,之前我們可以只是簡單用css去做一些靜態的界面佈局,需要動畫效果還是需要js的幫助才可 ...
  • ClockPicker.js是一款時鐘插件,其實還可以改進,裡面的分可以改成短橫線。 線上實例 實例預覽 jQuery ClockPicker 圓形時鐘 使用方法 複製 參數詳解 ClockPicker調用方法 下載 ...
  • CSS3為我們帶來了令人驚嘆的新特性,而最有趣的就是CSS動畫。向大家推薦這50個CSS動畫集合可以讓你通過使用JavaScript函數來讓動畫更生動。為了能夠預覽到這些驚人的CSS3技術帶來的動畫特效,請大家使用如Safari和Chrome這類基於WebKit內核的瀏覽器。(IE瀏覽器謝絕觀賞~) ...
  • 方法一: // 計算系統當前是星期幾 var str = "今天是星期" + "日一二三四五六".charat(new date().getday()); 方法二: var a = new array("日", "一", "二", "三", "四", "五", "六"); var week = ne ...
  • 針對之前遇到過的一些特殊樣式的實現,我今天做個總結,目的有二:一是將這些方法記錄下來,以便將來需要用到時查找使用。二為將這些大神們智慧的結晶發揚光大,讓廣大前端程式猿們能夠少走彎路。此貼為更新帖,以後若有好的css樣式技巧,小哥我會不定期更新。 一、塊元素水平垂直居中(特別鳴謝:鑫生活。鑫哥出品必屬 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...