Coder Social home page Coder Social logo

Comments (14)

clue avatar clue commented on July 18, 2024

New additions (and mere ideas) are very much appreciated!

I think it certainly makes sense to add this feature. Perhaps it should be generalized as to accept a --depth={N} option? So in your case, you'd probably want to supply a --depth=1.

from graph-composer.

pscheit avatar pscheit commented on July 18, 2024

jeah, i thought for depth as well. But I have dependencies in my graph that are sub dependencies, which i want to display.
Basicall i really want to filter with /webforge-(.*)/

from graph-composer.

clue avatar clue commented on July 18, 2024

Duh, totally missed your reply, sorry.

Now I see where you're coming from. Filtering on an arbitrary parameter is significantly more complex as you have to consider what happens with intermediary dependencies like this:

A -> B -> C

So if you only keep A and C (i.e. filter out B), you might either want show

A -> C

or just

A C

which dependending on your use case might both be incorrect.. I'm interested to see what you come up with, though.

Would you merge this?

Certainly yes! :)

from graph-composer.

radanisk avatar radanisk commented on July 18, 2024

๐Ÿ‘

from graph-composer.

markuspoerschke avatar markuspoerschke commented on July 18, 2024

Some other thing that could make the graph more readable would be removing the require-dev dependencies. In our case every package depends on PHPUnit and PHP. This could easily be dropped. Maybe we can add a parameter to ignore dependencies also by require-dev?

from graph-composer.

bishopb avatar bishopb commented on July 18, 2024

@markuspoerschke ๐Ÿ‘

from graph-composer.

clue avatar clue commented on July 18, 2024

Maybe we can add a parameter to ignore dependencies also by require-dev?

Thanks for your interest guys! Hiding dev dependencies is discussed in #2 (and a pending PR #19).

Afaict this tickets aims to find other, alternative ways to "filter" the dependency graph - though I'm not sure how this could/should work (see above for some background).

Any input is much appreciated!

from graph-composer.

bishopb avatar bishopb commented on July 18, 2024

I would want to see a --prune <package> option, which removes that package and all of its dependencies from the graph. Simultaneously, any packages affected by the pruning would have a visual marker indicating they're not 100% complete. Example:

Initial state    --prune D   --prune C   --prune B   --prune A  --prune A --prune D
==============   ==========  ==========  ==========  =========  ===================
   A     B         A    B*    A*    B    A                B              B*
   |- C  |         |- C*            |    |- C             |
      |  |                          D       |             D
      D--|                                  D

The asterisks represent the visual indicator. On the graph, it could be a dotted border, a lighter hue, etc.

Show/hide dev dependencies is just a special case of this general instrument. If my require dev is phpunit, behat, and athletic, then that's equivalent to --prune phpunit --prune behat --prune athletic.

Admittedly, I haven't considered all the ramifications or possibilities. We might not allow --prune to fragments the graph into multiple "islands", as explained in this research paper, ยง 3.2. However, we might offer a --prune-force override to really do this.

I personally do not mind if the graph generation takes more time, if by spending that time I can get a graph that's more relevant to what I need to visualize.

from graph-composer.

addshore avatar addshore commented on July 18, 2024

+1 I would love something like this!

from graph-composer.

bishopb avatar bishopb commented on July 18, 2024

@clue I can put some cycles on this (though with no guaranteed delivery dates!).

What do you think of the --prune API mentioned earlier?

How about an approach like PHP Dependency Analysis, which uses "levels" to decide how deep to descend?

from graph-composer.

NiMeDia avatar NiMeDia commented on July 18, 2024

Thought about implementing this with the --prune (or --exclude) command like @bishopb mentioned above, just don't know how to handle the PR from #19 which would potentionally conflict with this issue.

from graph-composer.

bishopb avatar bishopb commented on July 18, 2024

@P0rnflake, Isn't --dev equivalent to current behavior and --no-dev a convenient shortcut to the equivalent prunes (--prune dev/dep1 --prune dev/dep2 ... --prune dev/depN)?

If so, then the CLI API and feature from #19 could be merged in, then when this issue is implemented, just rewrite that API to use prune. That wouldn't have any BC to the user, but it might abandon all the work from #19 in favor of the general prune approach.

from graph-composer.

clue avatar clue commented on July 18, 2024

Thanks for the discussion so far everybody ๐Ÿ‘

I'd love to make this actionable and get this into a future release :shipit:

As such, see also #33 which aims to implement a (much simpler) --depth option.

Does anybody feel like giving an implementation that prunes/removes certain dependencies a go? Perhaps this may help sort out the remaining uncertainties.

from graph-composer.

 avatar commented on July 18, 2024

Any progress planned on this? I would like this feature as well. Whenever I have time I could have a look at the code and propose a PR but that won't be soon.

from graph-composer.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.