vrod

vrod

I have a problem that is coming up now and then. One app depends on another, which depends on another. This is all ok because the organization is good – no cyclic dependencies.

However, many times, I find that there is problem with ex_doc because all packages use this. But if one package includes it in a slightly different way, the app that depends on that package will get an error, something like:

Dependencies have diverged:
* ex_doc (Hex package)
  the :only option for dependency ex_doc

  > In mix.exs:
    {:ex_doc, "~> 0.24.0", [env: :prod, repo: "hexpm", hex: "ex_doc", only: :dev, runtime: false, optional: true]}

  does not match the :only option calculated for

  > In deps/unicode_set/mix.exs:
    {:ex_doc, "~> 0.19", [env: :prod, hex: "ex_doc", repo: "hexpm", optional: false]}

  Remove the :only restriction from your dep
** (Mix) Can't continue due to errors on dependencies

I am trying many things to fix this in the dependencies, but it seems that always the parent app has this problem. It’s very frustrating!

I am noticing how packages like ecto use ex_doc, and is something like {:ex_doc, "~> 0.20", only: :docs} (but this does not seem to solve the “Dependencies have diverged” problem).

How should packages include ex_docs? Pretty much everything on hex.pm requires this package to make it’s documentation pages, yes?

Showing Posts 1 to 5

LostKobrakai

LostKobrakai

Dependencies always run in :prod env and :ex_doc is documented to be included as only: :dev (or custom equivalent). This should resolve the problem of ex_doc mismatches. Though it seems :unicode_set doesn’t exclude :ex_doc from :prod at the moment.

axelson

axelson

Scenic Core Team

And a PR has already been made and merged to fix that: Sets ex_doc and benchee to optional: true; bumps vers by fireproofsocks · Pull Request #3 · elixir-unicode/unicode_set · GitHub

Now you can either depend on the unicode_set master branch {:unicode_set, github: "elixir-unicode/unicode_set", branch: "master"} or wait for the next release.

Another fix would be to use override: true on ex_doc. I’m actually surprised that the error message doesn’t recommend that, unless it doesn’t allow overriding “only”.

kip

kip

ex_cldr Core Team

Thanks to @fireproofsocks and @vrod for the issue and PRs. I have merged and published:

Please reopen an issue if you spot anything else.

josevalim

josevalim

Creator of Elixir

Quick question: why does it depend on ExDoc for prod? Shouldn’t it be a dev only dep?

Edit: it is dev only now. :slight_smile: then there is no need to be optional!

vrod

vrod OP

Thank you for the explanations and the quick fixes!

— All posts loaded —

Where Next? Top

Trending in Questions Top

katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
achenet
Hello, I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind. However, when I launch mix phx.server, I get an error...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
Cxx-mlr
I’m working on a small exercise involving update_in/3, and I came up with this solution: data = %{ name: "Periodic Table", category:...
New
ChrisAmelia
I’ve got trouble wrapping my head around the order in which functions are called in this snippet (from Phoenix’s authentication): toke...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews