强制NPM版本中应用的NodeJS
问题描述:
我们有一个+的NodeJS Express应用程序,并想强制应用程序成功运行npm install
只有npm -v
等于process.env.npm_package_engines_npm
,这是定义的package.json故宫的版本强制NPM版本中应用的NodeJS
这可能以某种方式吗?
这个要求的原因是要100%确定所有的依赖关系在所有的开发实例中都以相同的方式安装,因为最近我们遇到了一些开发者版本为5.2.0和其他5.3.0的问题,这个,结果不一样。
答
你可以用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');
}
});
答
您可以在指定engines
property in your package.json
,将打印出警告,如果NPM版本不匹配您指定什么(这至少让用户清楚,即使它不妨碍实际安装,他们也需要更新npm)。
如果你通过了engine-strict CLI标志那么如果版本不匹配,NPM将错误:
$ npm install --engine-strict
我不知道这一个。作为运行'npm install'的辅助要求也非常好 –