【问题标题】:Forced NPM version in Nodejs applicationNodejs 应用程序中的强制 NPM 版本
【发布时间】:2018-03-20 17:28:43
【问题描述】:

我们有一个 Nodejs + Express 应用程序,并且希望仅当 npm -v 等于 process.env.npm_package_engines_npm(即 package.json 中定义的 npm 版本)时才强制应用程序成功运行 npm install

这有可能吗?

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

【问题讨论】:

    标签: node.js express npm versioning


    【解决方案1】:

    你可以使用一个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');
      }
    });
    

    【讨论】:

      【解决方案2】:

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

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

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

      $ npm install --engine-strict
      

      【讨论】:

      • 我不知道这个。作为运行npm install的次要要求也非常好@
      猜你喜欢
      • 2017-02-12
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-25
      相关资源
      最近更新 更多