在哪里可以获得所有本机节点模块的数组?

时间:2019-01-02 08:52:41

标签: javascript node.js

我正在寻找一种获取所有可用节点模块列表的方法。动态获取它会很有趣,因为不同的版本或将来的版本可能会添加或弃用模块。

4 个答案:

答案 0 :(得分:3)

您可以使用以下代码获取所有全局安装的模块的列表:

function exec(callback) {
  require('child_process').exec('npm ls -g --depth=0 --json', function(err, data, stderr) {
    if (err) return cb(err)
    callback(data);
  });
}

function get_modules(callback) {
    var res = [];
    exec(function(d) {
        d = JSON.parse(d);
        var m = d.dependencies;     
        for(key in m) res.push(key);
        callback(res);
    });
}

get_modules(console.log);

如果要内置模块,请使用

console.log(require("module").builtinModules)

请参阅此doc

答案 1 :(得分:3)

如果您使用的是Node version> 8.11.3,则建议的实现方法是使用builtinModules对象的module属性,如下所示:

const builtins = require('module').builtinModules;

更多详细信息:https://nodejs.org/api/modules.html#modules_module_builtinmodules

答案 2 :(得分:0)

您可以获得像这样的本机模块列表:

const repl = require('repl') 
console.log(repl._builtinLibs)

通过这种方式,您可以在特定版本的Node.js中获得本机模块。

答案 3 :(得分:-1)

const m = [
    "assert",
    "buffer",
    "child_process",
    "cluster",
    "console",
    "constants",
    "crypto",
    "dgram",
    "dns",
    "domain",
    "events",
    "fs",
    "http",
    "https",
    "module",
    "net",
    "os",
    "path",
    "process",
    "punycode",
    "querystring",
    "readline",
    "repl",
    "stream",
    "string_decoder",
    "sys",
    "timers",
    "tls",
    "tty",
    "url",
    "util",
    "vm",
    "zlib"
];