我在构建脚本中检查全局安装的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版本?
答案 0 :(得分:4)
它并不漂亮,但这样做可以解决问题:
var exec = require('child_process').exec,
npmVersion;
exec('npm -v',
function (error, stdout, stderr) {
npmVersion = stdout;
});
请注意,它是异步的,因此您必须在回调中进行npm比较,但stdout中包含的值应该是semver的有效输入。
答案 1 :(得分:1)
如果通过"类似的方式"你的意思是检查npm的package.json文件,然后你必须知道它所在的文件系统的位置。这意味着知道如何安装npm:它可以通过管理工具,如nvm
或n
,也可以通过您的操作系统'软件安装工具或软件包管理器,或者它可以只是在任意目录中。
最简单的做法可能是跳过尝试查找npm的package.json文件,而只是使用node的内置Child Process模块来执行npm -v
和捕获变量中的输出,然后使用semver进行必要的比较。