我需要检查某个模块是否属于某个版本。
我可以通过执行以下操作来检查模块是否存在于同一文件夹中:
var other;
try {
other = require("../theOtherModule");
} catch(e){
// module doesn't exist or something
}
但是,这并没有告诉我该模块的版本。我需要能够判断该模块是否属于某个版本或更高版本。
答案 0 :(得分:3)
我不认为有这样的内置功能。相反,您可以从package.json文件中获取该版本:
var packageJson = require('./package.json');
console.log(packageJson.version);
答案 1 :(得分:0)
最简单的方法是让你的模块导出其版本,以便其他东西可以读取它。
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
依赖项。