問(wèn)題背景
很多場(chǎng)景下我們需要同時(shí)使用多個(gè)不同版本的Node.js项阴。比如:你有多個(gè)項(xiàng)目吁断,這些項(xiàng)目由于開(kāi)始時(shí)間不同炮障,用的Node.js版本都會(huì)不同椿每;又或者你現(xiàn)在項(xiàng)目用的是4.x.x伊者,但是你想試試下一個(gè)LTS版本——6.x.x英遭。這些情況下,你會(huì)發(fā)現(xiàn)你每次都要去切換Node.js的版本亦渗,哪怕你用NVM來(lái)管理多個(gè)Node.js挖诸,切換也都需要執(zhí)行nvm use ...
命令。有的時(shí)候會(huì)忘記導(dǎo)致很多不必要的麻煩法精!
那么怎么樣才能根據(jù)不同的項(xiàng)目自動(dòng)切換對(duì)應(yīng)的Node版本呢多律?
思路
先拋開(kāi)是否有工具可以幫我們完成這件事情。我們先來(lái)想一下如果讓你來(lái)實(shí)現(xiàn)這樣一個(gè)功能搂蜓,你會(huì)怎么做狼荞?
首先,你至少需要申明你各個(gè)項(xiàng)目所需要的Node版本號(hào)帮碰,那么最方便的就是:
- 直接申明在
package.json
中 - 單獨(dú)在項(xiàng)目根目錄中某個(gè)文件中(文件名約定好)申明
然后相味,我們需要一個(gè)觸發(fā)點(diǎn),這個(gè)觸發(fā)點(diǎn)可以讓你去根據(jù)上述提到的文件中獲取到 Node 版本號(hào)并自動(dòng)切換殉挽。而這個(gè)切換點(diǎn)最好的當(dāng)然是cd
命令丰涉。因?yàn)槲覀兛偸切枰?code>cd到項(xiàng)目目錄中去。
好了斯碌,以上就是我們的思路一死,匯總下來(lái)就是:
- 在項(xiàng)目根目錄中需要一個(gè)地方來(lái)申明需要的 Node 版本號(hào)
- 當(dāng)用戶“進(jìn)入”到項(xiàng)目中的時(shí)候,自動(dòng)根據(jù)申明的 Node 版本號(hào)進(jìn)行自動(dòng)切換
解決方案
社區(qū)已經(jīng)有類似我們上述思路的工具输拇,這里推薦avn-Automatic Version Switching for Node摘符,avn
提供了 nvm
的插件(當(dāng)然也有n
的插件),使用起來(lái)非常簡(jiǎn)單(以NVM為例)策吠,直接:
npm i -g avn avn-nvm
avn setup
然后呢逛裤,只要在你的項(xiàng)目根目錄下創(chuàng)建一個(gè).node-version
文件,并且以semver的格式來(lái)申明所需要的 Node 的版本號(hào)猴抹,如:4.5.0
接著带族,當(dāng)你cd
到項(xiàng)目目錄中的時(shí)候,avn 就會(huì)自動(dòng)幫你切換到指定的 Node 版本蟀给。非常方便蝙砌!