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
相关文章
相关标签/搜索