检查模块版本

Check module version

本文关键字:版本 模块 检查      更新时间:2023-09-26

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

我可以通过这样做检查模块是否存在在同一文件夹中:

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

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

我认为没有内置函数可以做到这一点。相反,您可以从 package.json 文件中获取版本:

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

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

其他模块.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依赖项。