2017-10-09 57 views
0

我们有一个+的NodeJS Express应用程序,并想强制应用程序成功运行npm install只有npm -v等于process.env.npm_package_engines_npm,这是定义的package.json故宫的版本强制NPM版本中应用的NodeJS

这可能以某种方式吗?

这个要求的原因是要100%确定所有的依赖关系在所有的开发实例中都以相同的方式安装,因为最近我们遇到了一些开发者版本为5.2.0和其他5.3.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

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

,将打印出警告,如果NPM版本不匹配您指定什么(这至少让用户清楚,即使它不妨碍实际安装,他们也需要更新npm)。

如果你通过了engine-strict CLI标志那么如果版本不匹配,NPM将错误:

$ npm install --engine-strict 
+0

我不知道这一个。作为运行'npm install'的辅助要求也非常好 –

相关问题