pahen / madge

Create graphs from your CommonJS, AMD or ES6 module dependencies
MIT License
9.09k stars 318 forks source link

Dev Discussion #351

Open PabloLION opened 1 year ago

PabloLION commented 1 year ago

While going through all the current issues, I see some related issues and I'm trying to categorize them. This issue is created to discuss the priority of each versions and make some plan (or use GitHub Projects), and how do we achieve the goals, including the design pattern change, etc. (or use GitHub Discussions)

PabloLION commented 1 year ago

Refactor

API

Visualization

After seeing these problems, I think we should maybe make the dependency graph "reactive" : the nodes expand / collapse on click. But this seems a bit off-topic of madge. An alternative is to make / use a new package to print this "reactive" graph and integrate this package into madge. What do you think? @vikingair @kamiazya @pahen

Docker

PabloLION commented 1 year ago

I spent many hours labelling all the issues. I wish there were a bot to do this possibly with ChatGPT. Not sure what should we do next, I'm thinking about

vikingair commented 1 year ago

Thanks for your effort @PabloLION

I still had no chance to play around with the visualization stuff, so can't tell what's possible and what's not. If we require more flexibility and also aim to make the dependencies more lightweight, does this mean we would replace graphviz?

I'd like if we first clean up the open PRs, as a good sign that code contribution is high valued. Doesn't mean we should merge them all, but closing with good reason would also be nice.

PabloLION commented 1 year ago

Agreed. I'll work on those PRs now. Great suggestion!

vikingair commented 1 year ago

Another thing, I'd like to share, is what I'm using Madge for and what is important to me.

I've introduced Madge in dozens of projects as CI lint target to prevent engineers from introducing circular dependencies early on. In the beginnings of Webpack circular dependencies could cause the build of an application to fail and these kind of issues where very hard to detect and to fix. That's when I stumbled over Madge and with its visualization features (primarily on the console), it was possible to fix the root cause. Also, I've found that preventing circular dependencies produces more clear overall code structure.

However, as of now these kind of issues are very easy to fix, because I made sure they don't bypass any CI checks. So I don't really depend on the graphviz features even though they are really nice.

On the other hand, I think it would be nice if it would also support Vue and Svelte files for dependency resolution, but it seems to be very tricky because dependency-tree doesn't seem to support those.

Btw. if you know surprisingly a good working alternative covering my needs, I'd appreciate your opinion. I tried already fadge and eslint-plugin-import with import/no-cycle options. Both were not catching simple circular deps I've introduced whereas madge was able to, so they seem bad alternatives.

kamiazya commented 1 year ago

We have started merging PRs and have created milestones for 6.1.0.

Please tie them to what you think is needed before the release.

kamiazya commented 1 year ago

I had talked about volunteering until the end of March, but my work is starting to get busy and I may not be able to guarantee enough time to be involved in this project after that.

I may be able to work on releases and other specific tasks, so please contact me if needed.