本文不讨论 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