簡體   English   中英

從節點腳本獲取安裝的npm版本?

[英]Get installed version of npm from node script?

我在構建腳本中檢查全局安裝的Node版本:

var semver = require('semver');
var packageJson = require('./package.json');
var expectedVersion = packageJson.engines.node;

var actualVersion = process.version;
if (semver.neq(expectedVersion, actualVersion)) {
  fail('Incorrect Node version: expected ' + expectedVersion + ', but was ' + actualVersion);
}

我想以類似的方式檢查全局安裝的npm版本。 如何檢索全局安裝的npm版本?

它不漂亮,但這將成功:

var exec = require('child_process').exec,
npmVersion;

exec('npm -v',
  function (error, stdout, stderr) {
    npmVersion = stdout;
});

請注意,它是異步的,所以你必須在回調中進行npm比較,但是stdout中包含的值應該是semver的有效輸入。

如果用“類似的方式”表示檢查npm的package.json文件,那么你必須知道它所在的文件系統中的位置。 這意味着知道如何安裝npm:它可以通過像nvmn這樣的管理工具,也可以通過你的操作系統軟件安裝工具或包管理器,或者它可以只是在任意目錄中。

可能最簡單的方法是跳過嘗試查找npm的package.json文件,而只是使用node的內置Child Process模塊執行npm -v並在變量中捕獲輸出,然后根據需要使用semver進行比較。

暫無
暫無

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

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