Node核心模块的确切列表

时间:2016-03-06 07:06:43

标签: node.js

我正在寻找一种获取所有Node.js核心模块的最新列表的方法。是否有NPM模块提供这样的运行列表?在我生命的历史中的某个地方,我已经回答了这个问题的答案,但我不记得它,也不记得它有多好。

5 个答案:

答案 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;

列出所有内置模块。