Nomnom Pumpernickle Muffins
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    npm-graphpublic

    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.

    install

    npm i npm-graph

    Downloadslast 7 days

    21

    version

    0.5.0

    license

    MIT

    repository

    github.com

    last publish

    collaborators

    • avatar