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命令進行啟動的方式可以方便的完成同一個伺服器運行多個不同版本的應用系統,非常方便靈活。