检查模块版本

时间:2014-12-06 04:11:42

标签: javascript node.js module version require

我需要检查某个模块是否属于某个版本。

我可以通过执行以下操作来检查模块是否存在于同一文件夹中:

var other;
try {
  other = require("../theOtherModule");
} catch(e){
  // module doesn't exist or something
}

但是,这并没有告诉我该模块的版本。我需要能够判断该模块是否属于某个版本或更高版本。

2 个答案:

答案 0 :(得分:3)

我不认为有这样的内置功能。相反,您可以从package.json文件中获取该版本:

var packageJson = require('./package.json');
console.log(packageJson.version);

答案 1 :(得分:0)

最简单的方法是让你的模块导出其版本,以便其他东西可以读取它。

theOtherModule.js

exports.version = require('./package').version;

然后使用semver模块,并假设您需要版本2.x,但您在package.json依赖关系列表中可能包含的任何版本字符串都可以使用。

var semver = require('semver');
var other;
try {
    other = require("../theOtherModule");
} catch(e){
    // module doesn't exist or something
}

if (!semver.satisfies(other.VERSION, '2.x')){
     // Do whatever you need to do if the version isn't supported.
}

也就是说,重要的是要意识到你本质上是在复制npm上的工作,这可能表明节点模块系统的使用不正确。在版本控制至关重要的情况下,最好有一个内部npm注册表,然后让theOtherModule成为实际的npm依赖项。