在nodejs中运行时检查包版本?

nac*_*o4d 4 package node.js express

我将package.json中的一些条目定义为"*"

"dependencies": {
    "express": "4.*",
    "passport": "*",
    "body-parser": "*",
    "express-error-handler": "*"
},
Run Code Online (Sandbox Code Playgroud)

我不想将这些值冻结到当前版本.如何知道我的软件包在运行时的版本?我不介意逐个检查,因为我没有很多:)

顺便说一句:我做不到,npm list --depth=0因为我不能直接访问vm(PaaS限制),只是日志.

lag*_*lex 7

您可以使用该fs模块读取目录中的node_modules目录,然后读package.json入每个目录.

var fs = require('fs');
var dirs = fs.readdirSync('node_modules');
var data = {};
dirs.forEach(function(dir) {
    try{
    var file = 'node_modules/' + dir + '/package.json';
    var json = require(file);
    var name = json.name;
    var version = json.version;
    data[name] = version;
    }catch(err){}
});
console.debug(data['express']); //= 4.11.2
Run Code Online (Sandbox Code Playgroud)