本文不討論 nvm 的版本管理和使用。前端
當有多個前端項目時,每一個項目中的package.json
中務必寫上配置項"engineStrict"
和"engines"
。示例:node
//package.json "engineStrict": true, "engines": { "node": "8.10.0" },
若使用npm install
進行安裝,目前沒法檢測上述配置項,即node版本不對也不會提示。若使用yarn
則會控制檯報 warning。git
然而 yarn 也不會自動切node版本,不過nvm提供了稍微便捷一點的方法:github
nvm use
命令會讀取.npmrc
中的node版本號作切換。nvm run app.js
也會先讀取.npmrc
的版本號自動切換。nvm exec npm install
能夠代替 npm install,雖然有點長。但是node版本號爲啥要寫2遍到2個文件裏? 因而一些開發者選擇了在package.json
的script
中加入了諸如preinstall
的腳本;也有開發者選擇全局安裝包 好比avn;也有本身寫shell腳本作切換。shell
我也提供一種shell的方案,只在一處配置node版本(package.json);當使用vscode 中的終端時會切換版本號,這對我就足夠了。npm
mac爲例,~/.bash_profile
加上:json
if [ -e "./package.json" ];then v=$(grep -E '\"node\"\s*\:\s*\"[^"]+"' package.json -o|grep -E '[0-9|.]+' -o) nvm use $v fi