- Add --no-spinner option (Thanks to @joebowbeer)
- Plot rounded boxes, prefer left to right by default (Thanks to @paulirish)
- Fix performance issue when flattening the dependency tree (Thanks to @wjohnsto)
- Fix issue with short CLI options not working properly
- Upgraded deps
- Upgraded
dependency-tree
to 6.0.0
- Support for dynamic imports thanks to @mrjoelkemp and @gmathieu
- Support for TypeScript thanks to @mrjoelkemp and @davidfirst
- To prevent issues with corrupt dependency trees the file extension in filenames will now always be included. Note that this affect how
--depends
and--exclude
match filenames. - Added
--orphans
to show modules that no one is depending on.
- Don't traverses NPM modules anymore (only shallow include)
- Option
--include-npm
added - Show CLI spinner with the currently processed file
- Updated CLI output and colors
- Added support for option
dependencyFilter
- Bug with —-stdin not working properly
- Tweaked output colors and error messages
- Support running —circular with —-warning
- Updated output in circular dependency check to include file count and better colors.
- Bug with circular dependency reported for
foo.js
>foo.json
due to how file extensions are handled.
- Better support for resolving paths using Webpack config.
- Show number of skipped files.
- Fixed bug with —-require-config and --webpack-config options in CLI not working.
- Renamed
--show-skipped
to--warning
.
- Don't show warnings about skipped files by default (enable with --show-skipped).
- Show skipped files that can't be resolved as warnings (can be disabled with --no-warning).
- Support for precinct detective option
es6.mixedImports
.
- Allow to pass options to dependency-tree detectives (Thanks to Fabio Crisci).
- Big performance boost when running on large codebases.
- Added option
--stdin
to be used for piping a predefined tree.
- Support for setting custom GraphViz options with config
graphVizOptions
.
After 4 years of adding features/fixes it started to be hard to maintain the project and fix some outstanding issues due to how madge was designed to work.
So I decided it was high time for version 1.0 to be released and take the opportunity to do a major rewrite and reduce the size and responsibility of the project and delegate some work to external libraries. This introduced many breaking changes. Here's the most important ones.
Added:
- Automatic module type detection thanks to precinct
- Determine image format based on file extension (SVG support)
- Reading config from
.madgerc
(replaces--config
) - Option
--webpack-config
for supporting aliased module paths - Option
--debug
for turning on debug output
Changed:
- Renamed many of the settings in the config
- Option
--json
should now be used instead of--output json
- The generation of the dependency tree is now delegated to the external module dependency-tree
- Recurse into child dependencies to get a complete dependency tree of a file
- NPM installed dependencies are now excluded by default
- Node.js core modules are now excluded
- The API is now using promises
Removed:
- Option
--format
since the format is now detected automatically from the file content - Option
--optimized
and--main-require-module
since we no longer support RequireJS builds (r.js) - Option
--read
- Option
--find-nested-dependencies
- Option
--paths
- Option
--config
- Option
--output
- Option
--break-on-error
- CoffeeScript support
- Event callbacks
onParseFile
andonAddModule
- NPM shrinkwrap no longer used
- Refactored Madge to use ES6 and now requires Node.js 4 to run.
- Add note about Graphviz and Windows in README.
- Fix matching absolute path in Windows (Thanks to nadejdashed).
- Support for ES6 re-export syntax (Thanks to Oli Lalonde).
- Support files with ES6 (Thanks to Joel Kemp).
- Improve readme circular return object (Thanks to Way Of The Future).
- Improved JSX and ES7 support (Thanks to Joel Kemp).
- Correct regex on CommonJS parser to detect a core module (Thanks to Guillaume Gomez).
- Updated dependency resolve to latest version.
- Updated dependencies to newer versions (Thanks to Martin Kapp).
- Added support for ES6 modules (Thanks to Marc Laval).
- Added support for setting custom file extension name (Thanks to Marc Laval).
- Fixed issues with absolute paths for modules IDs in Windows (all tests should now pass on Windows too).
- Add support for JSX (React) and additional module paths (Thanks to Ben Lowery).
- Fix for detecting presence of AMD or CommonJS modules (Thanks to Aaron Russ).
- Now resolves the module IDs from the RequireJS paths-config properly (Thanks to russaa).
- Added support for option findNestedDependencies to find nested dependencies in AMD modules.
- Fix issue with number of graph node lines increased with each render (Thanks to Colin H. Fredericks).
- Correctly detect circular dependencies when using path aliases in RequireJS config (Thanks to Nicolas Ramz).
- Fixed bug with relative paths in AMD not handled properly when checking for cyclic dependencies.
- Handle anonymous require() as entry in the RequireJS optimized file (Thanks to Benjamin Horsleben).
- Apply exclude to RequireJS shim dependencies (Thanks to Michael White).
- Added support for onParseFile and onAddModule options (Thanks to Brandon Selway).
- Added JSON output option (Thanks to Drew Foehn).
- Fix for optimized files including dependency information for excluded modules (Thanks to Drew Foehn). Fixes issue.
- Added support for including shim dependencies found in RequiredJS config (specify with option -R).
- Ensure forward slashes are used in modules paths (Windows).
- Added support for reading AMD dependencies from a r.js optimized file by using option -O.
- Added missing fontsize option when generating images.
- AMD plugins are now ignored as dependencies. Fixes issue.
- Fixed Windows issue when reading from standard input with --read.
- Switched library for walking directory tree which should solve issues on Windows.
- Added proper exit code when running "madge --circular" so it can be used in build scripts.
- Relative AMD module identifiers (if the first term is "." or "..") are now resolved.
- Tweaked circular dependency path output.
- Complete path in circular dependencies is now printed (and marked as red in image graphs).
- Added support for CoffeeScript. Files with extension .coffee will automatically be compiled on-the-fly.
- Fixed dependency issues with Node.js v0.8.
- Added support for Node.js v0.8 and dropped support for lower versions.
- Added ability to read config file and customize colors.
- Initial release.