0.5.0 • Published 9 years ago

npm-graph v0.5.0

Weekly downloads
5
License
MIT
Repository
github
Last release
9 years ago

npm graph

npm status build status dependency status coverage status

Essentially npm ls with two modifications:

  • only explicitly required dependencies
  • finds cyclical requires

Dependencies are analyzed using parts of the browserify toolchain.

Usage

Install globally and give it a path to a local package or a file:

$ npm install -g npm-graph

no arguments - npm modules only

$ npm-graph node_modules/irc-stream/
irc-stream
 └───irc

If all modules in "dependencies" are used, then this should look like npm ls.

show builtins

$ npm-graph node_modules/irc-stream/ -b
irc-stream
 ├──┬irc
 │  ├───net
 │  ├───tls
 │  └───util
 └───stream

This can give some at a glance information about how browserifiable the module is.

show local files

File by file inclusion:

$ npm-graph node_modules/irc-stream/ -l
irc-stream
 └──┬irc
    ├───./codes
    └───./colors

cycle detection

Cycles are detected and shown in the tree with a after an offender. As an example, readable-stream (tsk tsk) closes a cyclical loop by having Duplex depend on Writable and vice versa (albeit lightly).

$ npm install readable-stream@1.0.27-1
$ npm-graph node_modules/readable-stream/writable.js -l
writable.js
 └─┬./lib/_stream_writable.js
   ├─┬./_stream_duplex ↪ ./_stream_writable
   │ ├─┬./_stream_readable
   │ │ ├──core-util-is
   │ │ ├──inherits
   │ │ ├──isarray
   │ │ └──string_decoder/
   │ ├──core-util-is
   │ └──inherits
   ├──core-util-is
   └──inherits

The mutual file inclusions would normally cause a recursion overflow when generating the tree if we hadn't first found the strongly connected components in the inclusion digraph and manually broken the cycle.

( •_•)
( •_•)>⌐■-■
(⌐■_■)

The cyclical components from Tarjan's algorithm are also available with -c:

$ npm-graph node_modules/readable-stream/writable.js -l -c
[ [ './node_modules/readable-stream/lib/_stream_writable.js',
    './node_modules/readable-stream/lib/_stream_duplex.js' ] ]

In this case, a 2-cycle.

License

MIT-Licensed. See LICENSE file for details.

0.5.0

9 years ago

0.4.0

10 years ago

0.3.3

10 years ago

0.3.2

10 years ago

0.3.1

10 years ago

0.3.0

10 years ago

0.2.0

10 years ago

0.1.0

10 years ago

0.0.1

10 years ago