Skip to content

Validate and visualize dependencies. Your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD.

License

Notifications You must be signed in to change notification settings

greglockwood/dependency-cruiser

Repository files navigation

Dependency cruiser Dependency cruiser

Validate and visualize dependencies. With your rules. JavaScript. TypeScript. CoffeeScript. ES6, CommonJS, AMD.

Snazzy dot output to whet your appetite

What's this do?

  • Run through the dependencies in any JavaScript, TypeScript or CoffeeScript project and ...
    • ... validate them against a set of (your own) rules
    • ... report violated rules
      • in text (for in your builds)
      • in graphics (for on your eyeballs)

As a nice side effect it can generate cool dependency graphs you can stick on the wall to impress your grandma.

How do I use it?

Install it

Dependency cruiser works most comfortably when you install it globally.

npm install --global dependency-cruiser

Show stuff

To create a graph of the dependencies in your src folder, you'd run dependency cruiser with output type dot and run GraphViz dot on the result. In a one liner:

dependency-cruise --exclude "^node_modules" --output-type dot src | dot -T svg > dependencygraph.svg

The --exclude "^node_modules" makes sure dependency-cruiser does not scan paths starting with node_modules.

  • You can read more about what you can do with --exclude and other command line options in the command line interface documentation.
  • Real world samples contains dependency cruises of some of the most used projects on npm.

Validate stuff

Declare some rules

To have dependency-cruiser report on dependencies going into the test folder (which is totally weird, right?) create a rules file (e.g. my-rules.json) and put this in there:

{
    "forbidden": [{
        "name": "not-to-test",
        "comment": "don't allow dependencies from outside the test folder to test",
        "severity": "error",
        "from": { "pathNot": "^test" },
        "to": { "path": "^test" }
    }]
}
  • To read more about writing rules check the writing rules section.
  • There is practical rules configuration to get you started here

Report them

Pass the --validate parameter, to the command line followed by the rules file.

Most output-types will show violations of your rules in one way or another. The dot reporter, for instance, will color edges representing violated dependencies in a signaling color (red for errors, orange for warnings) - the picture on top of this README is a sample of that.

The err reporter only emits (text) output when there's something wrong. This is useful when you want to check the rules in your build process:

dependency-cruise --validate my-rules.json --output-type err src

sample err output

  • Read more about the err, dot, but also the csv and html reporters in the command line interface documentation.
  • dependency-cruiser uses itself to check on itself in its own build process; see the dependency-cruise target in the Makefile

I want to know more!

You've come to the right place :-) :

License

MIT

Thanks

  • Marijn Haverbeke and other people who colaborated on acorn - the excelent javascript parser dependency-cruiser uses to infer dependencies.

build status coverage bitHound Overall Score bitHound Dependencies bitHound Dev Dependencies npm stable version total downloads on npm

About

Validate and visualize dependencies. Your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 96.3%
  • Handlebars 1.0%
  • HTML 1.0%
  • Mermaid 1.0%
  • TypeScript 0.3%
  • Vue 0.2%
  • Other 0.2%