Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 7ae7124

Browse filesBrowse files
maclover7MylesBorins
authored andcommitted
module: add builtinModules
Provides list of all builtin modules in Node. Includes modules of all types: - prefixed (ex: _tls_common) - deprecated (ex: sys) - regular (ex: vm) PR-URL: #16386 Refs: #3307 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
1 parent 94be7fd commit 7ae7124
Copy full SHA for 7ae7124

File tree

Expand file treeCollapse file tree

3 files changed

+42
-0
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

3 files changed

+42
-0
lines changed
Open diff view settings
Collapse file

‎doc/api/modules.md‎

Copy file name to clipboardExpand all lines: doc/api/modules.md
+22Lines changed: 22 additions & 0 deletions
  • Display the source diff
  • Display the rich diff
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,28 @@ The `module.require` method provides a way to load a module as if
817817
`module` is typically *only* available within a specific module's code, it must
818818
be explicitly exported in order to be used.
819819

820+
## The `Module` Object
821+
822+
<!-- YAML
823+
added: v0.3.7
824+
-->
825+
826+
* {Object}
827+
828+
Provides general utility methods when interacting with instances of
829+
`Module` -- the `module` variable often seen in file modules. Accessed
830+
via `require('module')`.
831+
832+
### module.builtinModules
833+
<!-- YAML
834+
added: REPLACEME
835+
-->
836+
837+
* {string[]}
838+
839+
A list of the names of all modules provided by Node.js. Can be used to verify
840+
if a module is maintained by a third-party module or not.
841+
820842
[`__dirname`]: #modules_dirname
821843
[`__filename`]: #modules_filename
822844
[`Error`]: errors.html#errors_class_error
Collapse file

‎lib/module.js‎

Copy file name to clipboardExpand all lines: lib/module.js
+6Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,12 @@ function Module(id, parent) {
7474
}
7575
module.exports = Module;
7676

77+
const builtinModules = Object.keys(NativeModule._source)
78+
.filter(NativeModule.nonInternalExists);
79+
80+
Object.freeze(builtinModules);
81+
Module.builtinModules = builtinModules;
82+
7783
Module._cache = Object.create(null);
7884
Module._pathCache = Object.create(null);
7985
Module._extensions = Object.create(null);
Collapse file
+14Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
'use strict';
2+
require('../common');
3+
const assert = require('assert');
4+
const { builtinModules } = require('module');
5+
6+
// Includes modules in lib/ (even deprecated ones)
7+
assert(builtinModules.includes('http'));
8+
assert(builtinModules.includes('sys'));
9+
10+
// Does not include internal modules
11+
assert.deepStrictEqual(
12+
builtinModules.filter((mod) => mod.startsWith('internal/')),
13+
[]
14+
);

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.