簡體   English   中英

Nodejs應用程序中的強制NPM版本

[英]Forced NPM version in Nodejs application

我們有一個Nodejs + Express應用程序,並且僅當npm -v等於process.env.npm_package_engines_npm ,才強制該應用程序成功運行npm install ,這是package.json中定義的npm版本。

這有可能嗎?

這樣做的原因是為了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');
  }
});

您可以在package.json中指定engines屬性。

如果npm版本與您指定的版本不匹配,則會打印出警告(至少可以使用戶清楚,即使它沒有阻止實際安裝,也需要更新npm)。

如果通過引擎限制的 CLI標志,那么如果版本不匹配,則npm將會錯誤:

$ npm install --engine-strict

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM