It would be useful to have a `mix deps.why` or `mix hex.why` task similar to `yarn why <package>` or `pnpm why <package>`, because I’m trying to figure out why `mix deps.get` is retrieving `poison`, when it is not in any of my `mix.exs` files (I am using an umbrella application).
```console $ ag :poison $(fd mix.exs) ``` Yet it is in my `mix.lock`: ```console $ ag '"poison":' mix.lock -c 1 $ mix deps.unlock poison Unlocked deps: * poison $ ag '"poison":' mix.lock -c $ mix deps.get Resolving Hex dependencies... Resolution completed in 0.67s Unchanged: [lots of entries] New: poison 5.0.0 $ ag '"poison":' mix.lock -c 1 ``` Poison is otherwise mentioned in my `mix.lock`, but *only* because it is an optional dependency for other dependencies: ``` $ ag poison mix.lock mix.lock 7: "app_identity": {:hex, :app_identity, "1.3.1", "6bf4970a433d7504a091b9ea57e6af4d7d23db76e7cc1577a6680e05823be7b2", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}, {:poison, ">= 3.0.0", [hex: :poison, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}, {:tesla, "~> 1.0", [hex: :tesla, repo: "hexpm", optional: true]}], "hexpm", "70b92d03fdf1140e26a71bad5c042d9474686999457deecaad7b30f0a794b918"}, 45: "gen_queue_opq": {:git, " https://github.com/KineticCafe/gen_queue_opq.git", "a0552879e3e17441c33e52e8688981b5c34f0375", [branch: "allow-poison-5"]}, 77: "poison": {:hex, :poison, "5.0.0", "d2b54589ab4157bbb82ec2050757779bfed724463a544b6e20d79855a9e43b24", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "11dc6117c501b80c62a7594f941d043982a1bd05a1184280c0d9166eb4d8d3fc"}, 87: "tesla": {:hex, :tesla, "1.7.0", "a62dda2f80d4f8a925eb7b8c5b78c461e0eb996672719fe1a63b26321a5f8b4e", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:exjsx, ">= 3.0.0", [hex: :exjsx, repo: "hexpm", optional: true]}, {:finch, "~> 0.13", [hex: :finch, repo: "hexpm", optional: true]}, {:fuse, "~> 2.4", [hex: :fuse, repo: "hexpm", optional: true]}, {:gun, "~> 1.3", [hex: :gun, repo: "hexpm", optional: true]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: true]}, {:ibrowse, "4.4.0", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.0", [hex: :mint, repo: "hexpm", optional: true]}, {:msgpax, "~> 2.3", [hex: :msgpax, repo: "hexpm", optional: true]}, {:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "2e64f01ebfdb026209b47bc651a0e65203fcff4ae79c11efb73c4852b00dc313"}, ``` In short, I don’t know why `poison` is being added back, and it would be nice if there was an equivalent to `pnpm why <dependency>`. I don’t know enough about how dependency resolution currently works to work on a PR, but I think that this would be of value. -a -- Austin Ziegler • halosta...@gmail.com • aus...@halostatue.ca http://www.halostatue.ca/ • http://twitter.com/halostatue -- You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to elixir-lang-core+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/CAJ4ekQsrfEaOWz0FBO%2BdSPD-m7AzrLWhMbGC-r0g9%2BOJXp%3DHTg%40mail.gmail.com.