有没有办法在npm安装之前检查node和npm版本?

时间:2016-04-04 07:37:10

标签: javascript node.js npm npm-install

我想在用户可以在我的模块上运行npm install之前只允许某个版本的节点和npm。

the NPM documentation中,有一个engine属性,专门用于此任务:

  "engines": {
    "node": ">=4.0.0",
    "npm": ">=3.0.0"
  }

这些参数仅允许节点和npm版本最多4和3。

但是,文档说明应该启用engine-strict属性以检查版本。在engine-strictit is said that

  

此功能已弃用npm 3.0.0

那么,有没有一种方法,使用npm3,为模块定义最小的Node和NPM版本?

2 个答案:

答案 0 :(得分:0)

  

那么,有没有一种方法,使用npm3,为模块定义最小的Node和NPM版本?

engines就是这么做的。这只是它通过A)输出一条警告用户,如果他们的系统不是最新的,以及B)失败,如果用户设置了engine-strict config flag

所有文档都说不再支持engineStrict来推动用户。 :-)如果他们想忽略咨询消息而不使用engine-strict配置标志,那么告诫用户

答案 1 :(得分:0)

Yarn 在安装时开箱检查引擎。但是使用 npm,此时您可能需要编写一个自定义验证器,以便在触发脚本之前检查节点版本。

export function verifyNodeVersion(version) {
  const nodeVersion = process.versions.node;
  if (!nodeVersion.startsWith(`${version}.`)) {
    throw new Error(
      `Incorrect version of Node found: ${nodeVersion}, Expected: v${version}.x`
    );
  }
  console.log('Current Node version:', nodeVersion);
  return true;
}

并在入口点调用函数。