npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

npm2dot

v2.0.0

Published

convert npm dependency list to graphviz format

Downloads

8

Readme

npm2dot

NPM Build Status

Convert npm dependency list to dot file which can be visualized using graphviz

NPM

Install

npm install npm2dot -g

Usage

1. In a Node.js package folder, type in console:

npm ls --json | npm2dot

2. By default npm2dot will write following content to stdout:

digraph{
 root="[email protected]"
 "[email protected]" -> "N_1"
 "N_1"[label="[email protected]",style="filled",fillcolor="0.06666666666666667 1 1"]
}

3. This output can be piped to Graphviz to generate a picture:

npm ls --json | npm2dot | dot -Tpng -o debug.png -Grankdir=LR

Picture debug.png is very simple because debug has only one dependency:

debug.png

That's how npm2dot interacts with npm ls and Graphviz. More complicated use cases are:

Use Case 1 : Comparison of folder structure installed separately using NPM2 and NPM3

NPM3 is currently in beta, one of the most expected feature is flatten structure :

Dependencies will now be installed maximally flat. Insofar as is possible, all of your dependencies, and their dependencies, and THEIR dependencies will be installed in your project's node_modules folder with no nesting. You'll only see modules nested underneath one another when two (or more) modules have conflicting dependencies.

Using npm2dot and Graphviz will help you clearly understand this change:

npm ls --json | npm2dot | twopi -Tsvg -o /tmp/twopi.svg -Granksep=4

Result:

Before, the dependencies is install with [email protected]

npm2

If we use [email protected] (npm install [email protected] -g) to install dependencies, there are less nodes in the structure

npm3

Use Case 2 : Comparison of Express Production and Development environment

In express folder, execute

npm ls --json | npm2dot | dot -Grankdir=LR -Tpng -O

Result:

Express Production Environment

express#production

Express Development Environment

express#development

About

1. Graphviz can be downloaded at http://www.graphviz.org/Download.php.

2. Anyone can fork this repo to provide more interesting use cases.

3. Please include a link to original github repo, if you want to use any pictures on this page.