控制node版本

口头约定的node版本并不能保证所有人在所有时间都能遵守规则,但用代码控制不一样,像一个毫无情分可言的杀手,发现可乘之机立即结束进程,干净利落(有点中二)。

使用Semver

跟目录下创建checkversion.js

const semver = require('semver');
const { engines } = require('./package');

const version = engines.node;
if (!semver.satisfies(process.version, version)) {
    console.error(`Required node version ${version}, got: ${process.version}.`);
    process.exit(1);
}

package.json跟节点下的engines定义版本号

{
  //...
  "engines": {
    "node": "~12.13.0"
  },
  //...
}

~ 表示不改变大版本号和次要版本号
^ 表示不改变大版本号

由于semver需要在安装后运行,因此在package.json scripts下的postinstall(不应在preinstall hook下)添加

{
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "postinstall": "node ./checkver.js"
  },
}

完成后执行node install 当系统node version与指定环境不一致时会结束进程并给予提示。

猜你喜欢

转载自blog.csdn.net/u010464354/article/details/102983120