Nodejs应用程序中的强制NPM版本

时间:2017-10-09 13:22:54

标签: node.js express npm versioning

我们有一个Nodejs + Express应用程序,并且只有在npm install等于npm -v时才强制应用程序成功运行process.env.npm_package_engines_npm,这是包中定义的npm版本上传.json

这有可能吗?

这个要求的原因是100%确保所有依赖关系将在所有开发实例中以相同的方式安装,因为最近我们遇到了一些开发人员拥有版本5.2.0和其他5.3.0的问题,因此,结果不一样。

2 个答案:

答案 0 :(得分:2)

您可以使用js脚本文件并运行node preinstall.js

// preinstall.js
const exec = require('child_process').exec;

exec('npm -v', function (error, stdout, stderr) {
  if (error) {
    console.log('error: ' + error + stderr);
    return;
  }

  const nodeVersion = stdout;

  if (process.env.npm_package_engines_npm === nodeVersion) {
    exec('npm install');
  }
});

答案 1 :(得分:1)

您可以指定engines property in your package.json

如果npm版本与您指定的版本不匹配,那将打印出警告(这至少使用户明白他们需要更新npm,即使它没有阻止实际安装)。

如果您传递engine-strict CLI标志,那么如果版本不匹配,npm将会出错:

$ npm install --engine-strict