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
const traverse = require('bare-module-traverse')
function readModule (url) {
// Read `url` if it exists, otherwise return null
}
function* listPrefix (url) {
// Yield URLs that have `url` as a prefix
}
for (const dependency of traverse(new URL('file:///directory/file.js'), readModule, listPrefix)) {
console.log(dependency)
}An asynchronous form is supported by iterating with for await.
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. 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.