我正在寻找一种获取所有可用节点模块列表的方法。动态获取它会很有趣,因为不同的版本或将来的版本可能会添加或弃用模块。
答案 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"
];