https://github.com/marco-eckstein/dependency-analysis
Tools that supplements the dependency analysis tool madge. So far, there is one tool which allows you to collapse dependencies.
https://github.com/marco-eckstein/dependency-analysis
Last synced: over 1 year ago
JSON representation
Tools that supplements the dependency analysis tool madge. So far, there is one tool which allows you to collapse dependencies.
- Host: GitHub
- URL: https://github.com/marco-eckstein/dependency-analysis
- Owner: marco-eckstein
- License: mit
- Created: 2017-07-13T21:12:00.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2022-03-26T13:25:20.000Z (about 4 years ago)
- Last Synced: 2025-02-05T18:46:31.509Z (over 1 year ago)
- Language: TypeScript
- Size: 108 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: readme.md
- License: license.txt
Awesome Lists containing this project
README
[](https://badge.fury.io/js/%40marco-eckstein%2Fdependency-analysis)
Tools that supplement the JavaScript module dependency analysis tool
[madge](https://www.npmjs.com/package/madge).
So far, there is only one tool: `collapse`. It allows you to collapse module dependencies, i.e.,
to view dependencies between the folders in which the models are contained. You can thus get a more
coarse-grained overview of your project structure.
# Usage
## Command-line
Madge analyzes your dependencies and lets you output them in various format, e.g. JSON: `madge --json modules-base-dir > dependencies.json`
An example output may be:
```
{
"a/aa1": ["b/bb/bbb1"],
"a/aa2": ["b/bb/bbb1", "c/cc1"],
"b/bb/bbb1": ["b/bb/bbb2"],
"b/bb/bbb2": ["c/cc1"],
"b/bb/bbb3": ["d/dd1"],
"c/cc1": [],
"d/dd1": [],
};
```
If your project is large, your dependencies (especially when viewed as an image) may become overwhelming.
Use `dependency-analysis collapse < dependencies.json` to collapse them by a level:
```
{
"a": ["b/bb", "c"],
"b/bb": ["c", "d"],
"c": [],
"d": [],
};
```
You can also collapse by multiple levels:
`dependency-analysis collapse --levels 2 < dependencies.json`
Input:
```
{
"a/aa/aaa": ["b/bb/bbb"],
"b/bb/bbb": [],
};
```
Output:
```
{
"a": ["b"],
"b": [],
};
```
Note that the minimum level of nesting in your input file must be equal to or larger than the levels
you are collapsing!
Interaction with the madge command:
`madge --json modules-base-dir | dependency-analysis collapse > dependencies-collapsed.json`
## API
```
import { collapse } from "@marco-eckstein/dependency-analysis";
const dependencies = JSON.parse(fs.readFileSync("deps.json", "utf8"));
const levels = 2;
const dependenciesCollapsed = collapse(dependencies, levels);
```
# Development
No global modules other than `npm` are necessary.
- Run `npm install` once after checking out.
- Then, run either `npm test` for a single full build cycle (clean, compile, lint, test),
or `npm start` for running the full cycle initially and then watch for file changes which will
trigger appropriate parts of the build cycle (compile, lint, test). The watch mode is not bulletproof:
It works for file updates, but you may get problems if you rename or delete files.
- Publish with `npm publish --access public`. This will run the full build cycle before publishing.