bare-module-traverse
Reference for bare-module-traverse: low-level module graph traversal for Bare, yielding every dependency, addon, and asset of an entry module.
bare-module-traverse walks a module graph from an entry URL, yielding every dependency, native addon, and asset it reaches. It's a pure-JavaScript generator built on bare-module-resolve, bare-addon-resolve, and bare-module-lexer. It's the engine behind bare-pack.
A low-level building block—use bare-pack to produce a bundle; reach for this directly only when building tooling on top of the graph.
npm i bare-module-traverseUsage
For synchronous traversal:
const traverse = require('bare-module-traverse')
function readModule(url) {
// Read `url` if it exists, otherwise `null`
}
function* listPrefix(url) {
// Yield URLs that have `url` as a prefix. The list may be empty.
}
for (const dependency of traverse(new URL('file:///directory/file.js'), readModule, listPrefix)) {
console.log(dependency)
}For asynchronous traversal:
const traverse = require('bare-module-traverse')
async function readModule(url) {
// Read `url` if it exists, otherwise `null`
}
async function* listPrefix(url) {
// Yield URLs that have `url` as a prefix. The list may be empty.
}
for await (const dependency of traverse(
new URL('file:///directory/file.js'),
readModule,
listPrefix
)) {
console.log(dependency)
}API
const dependencies = traverse(url[, options], readModule[, listPrefix])
Traverse the graph rooted at url. readModule returns a module's source or null; listPrefix enumerates URLs under a prefix (for assets). Iterate synchronously or with for await.
The resolver hooks resolve.module, resolve.addon, resolve.default, resolve.bare, and resolve.node control how specifiers map to URLs.
The step generators below (traverse.module, traverse.package, traverse.preresolved, traverse.imports, traverse.addons, traverse.assets) are subject to change between minor releases. If using them directly, specify a tilde range (~1.2.3) when declaring the dependency.
Step generators—traverse.module, traverse.package, traverse.preresolved, traverse.imports, traverse.addons, and traverse.assets—are exposed for fine-grained traversal; see the repository README.
Related modules
Builds on bare-module-resolve, bare-addon-resolve, and bare-module-lexer (see Bare modules).
See also
bare-pack—the bundler built on this traversal.bare-module-resolve—the resolver it drives.- Bare modules—the full
bare-*catalog.