LogoPear Docs
ReferencesBareModules

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-traverse

Usage

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.

Builds on bare-module-resolve, bare-addon-resolve, and bare-module-lexer (see Bare modules).

See also

On this page