FE.BASE-進一步NodeJS版本管理與自動切換:engineStrict二三事

本文不討論 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

  1. nvm use命令會讀取.npmrc中的node版本號作切換。
  2. 執行nvm run app.js 也會先讀取.npmrc的版本號自動切換。
  3. nvm exec npm install能夠代替 npm install,雖然有點長。

但是node版本號爲啥要寫2遍到2個文件裏? 因而一些開發者選擇了在package.jsonscript中加入了諸如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
相關文章
相關標籤/搜索