This repository is no longer maintained.
module-grapher resolves CommonJS module dependencies through recursive static analysis.
Although itself a node.js program, module-grapher's main target is client-side code.
While it can be used to build dependency graphs of node programs, it is unaware of node's special node_modules directory or NPM's nested package dependencies conventions. In fact, module-grapher is totally unaware of packages at large (it supports search paths, however). Programs relying on external packages will need to install them via a package manager like Kris Zyp's excellent CPM. module-grapher is designed to resolve module dependencies, not package dependencies.
In the future, module-grapher might become package-aware to handle cases where multiple versions of the same package are required, but this is not currently a priority.
module-grapher supports CoffeeScript and can be easily extended to support other languages which compile to JavaScript.
module-grapher is available as an NPM module.
$ npm install module-grapher
module-grapher accepts an filepath, source code or module identifier as input.
To get dependencies from a module:
require('module-grapher').graph('foo', {
paths: ['./lib', './vendor'], // defaults to the equivalent of ['.']
root: 'path/to/package/root/' // defaults to process.cwd()
}, callback);Other options include:
extensions(defaults to['.js', '.coffee']): an array of supported extensions.allowDirModules: Also search for modules in the index file of the directory named after them. So look for modulefoo/barnot only infoo/bar.jsbut also infoo/bar/index.js. Defaults tofalse.allowMissingModules: don't throw when a module is missing. Just mark it as such. Defaults tofalse.allowDynamicModuleIdentifiers: don't throw when the identifier of module isn't a string. Defaults tofalse.
Your choice of MIT or Apache, Version 2.0 licenses. module-grapher is copyright 2010 Tobie Langel.