我正在寻找一种获取所有Node.js核心模块的最新列表的方法。是否有NPM模块提供这样的运行列表?在我生命的历史中的某个地方,我已经回答了这个问题的答案,但我不记得它,也不记得它有多好。
答案 0 :(得分:22)
如果您不介意访问以下划线为前缀的属性,repl
会导出_builtinLibs
数组:
$ node -pe "require('repl')._builtinLibs" [ 'assert', 'buffer', 'child_process', 'cluster', 'crypto', 'dgram', 'dns', 'domain', 'events', 'fs', 'http', 'https', 'net', 'os', 'path', 'punycode', 'querystring', 'readline', 'stream', 'string_decoder', 'tls', 'tty', 'url', 'util', 'v8', 'vm', 'zlib' ]
该列表不像builtin-modules
模块提供的列表那样“完整”,因为它不包含未记录的类似模块。
答案 1 :(得分:4)
从Node v9.3.0开始,您只需执行以下操作:
require("module").builtinModules
[ 'async_hooks',
'assert',
'buffer',
'child_process',
'console',
'constants',
'crypto',
'cluster',
'dgram',
'dns',
'domain',
'events',
'fs',
'http',
'http2',
'_http_agent',
'_http_client',
'_http_common',
'_http_incoming',
'_http_outgoing',
'_http_server',
'https',
'inspector',
'module',
'net',
'os',
'path',
'perf_hooks',
'process',
'punycode',
'querystring',
'readline',
'repl',
'stream',
'_stream_readable',
'_stream_writable',
'_stream_duplex',
'_stream_transform',
'_stream_passthrough',
'_stream_wrap',
'string_decoder',
'sys',
'timers',
'tls',
'_tls_common',
'_tls_legacy',
'_tls_wrap',
'tty',
'url',
'util',
'v8',
'vm',
'zlib',
'v8/tools/splaytree',
'v8/tools/codemap',
'v8/tools/consarray',
'v8/tools/csvparser',
'v8/tools/profile',
'v8/tools/profile_view',
'v8/tools/logreader',
'v8/tools/tickprocessor',
'v8/tools/SourceMap',
'v8/tools/tickprocessor-driver',
'node-inspect/lib/_inspect',
'node-inspect/lib/internal/inspect_client',
'node-inspect/lib/internal/inspect_repl' ]
请参阅https://nodejs.org/api/modules.html#modules_module_builtinmodules
答案 2 :(得分:3)
J4F:您可以使用github api并直接以JSON格式获取文件列表。
var http = require('https')
var path = require('path')
var options = {
hostname: 'api.github.com',
path: '/repos/nodejs/node/contents/lib',
method: 'GET',
headers: { 'Content-Type': 'application/json',
'user-agent': 'nodejs/node'
}
}
var req = http.request(options, (res) => {
res.setEncoding('utf8')
var body = ""
res.on('data', (data) => { body += data })
res.on('end', () => {
var list = []
body = JSON.parse(body)
body.forEach( (f) => {
if (f.type === 'file' && f.name[0]!=='_' && f.name[0]!=='.') {
list.push(path.basename(f.name,'.js'))
}
})
console.log(list)
})
})
req.on('error', (e) => { throw (e) } )
req.end()
答案 3 :(得分:2)
根据https://www.npmjs.com/package/builtin-modules,内置模块中有33个模块。
36 according to core structures
28 repositories in Git
112 packages
编译此列表需要很长时间。做它作为node_core的研究将是一个很好的选择。
答案 4 :(得分:0)
console.log ( require('repl')._builtinLibs ); return;
列出所有内置模块。