問題背景
很多場景下我們需要同時使用多個不同版本的Node.js。比如:你有多個項目,這些項目由於開始時間不同,用的Node.js版本都會不同;又或者你現在項目用的是4.x.x,但是你想試試下一個LTS版本——6.x.x。這些情況下,你會發現你每次都要去切換Node.js的版本,哪怕你用NVM來管理多個Node.js,切換也都需要執行nvm use ...
命令。有的時候會忘記導致很多不必要的麻煩!
那么怎么樣才能根據不同的項目自動切換對應的Node版本呢?
思路
先拋開是否有工具可以幫我們完成這件事情。我們先來想一下如果讓你來實現這樣一個功能,你會怎么做?
首先,你至少需要申明你各個項目所需要的Node版本號,那么最方便的就是:
- 直接申明在
package.json
中 - 單獨在項目根目錄中某個文件中(文件名約定好)申明
然后,我們需要一個觸發點,這個觸發點可以讓你去根據上述提到的文件中獲取到 Node 版本號並自動切換。而這個切換點最好的當然是cd
命令。因為我們總是需要先cd
到項目目錄中去。
好了,以上就是我們的思路,匯總下來就是:
- 在項目根目錄中需要一個地方來申明需要的 Node 版本號
- 當用戶“進入”到項目中的時候,自動根據申明的 Node 版本號進行自動切換
解決方案
社區已經有類似我們上述思路的工具,這里推薦avn-Automatic Version Switching for Node,avn
提供了 nvm
的插件(當然也有n
的插件),使用起來非常簡單(以NVM為例),直接:
npm i -g avn avn-nvm
avn setup
然后呢,只要在你的項目根目錄下創建一個.node-version
文件,並且以semver的格式來申明所需要的 Node 的版本號,如:4.5.0
接着,當你cd
到項目目錄中的時候,avn 就會自動幫你切換到指定的 Node 版本。非常方便!