bortzmeyer
Conditional dependencies in mix.exs
I have a program which can provide different services, depending on its run-time configuration (through a configuration file or command-line options). Some of the services, but not all, depend on external libraries, such as HTTPoison, so I add in my mix.exs:
{:httpoison, "~> 1.8"}
But I would like to avoid this dependency (HTTPoison brings a lot of other libraries) if not necessary. How to make it conditional, and allow the program to know if it has been included or not, so it can produce a proper error message if the user tries to activate the service, without having the library?
I’ve read this StackOverflow post, which seems to be about a different problem, and this Elixir Forum discussion which was inconclusive.
Most Liked
mayel
moogle19
Yes, of course. I forgot to mention that.
You can do something like this:
defmodule SomeModule do
if Mix.target() == :your_target_no do
def some_function do
HTTPoison.get("forum.elixirforum.com")
end
else
def some_function do
# Do something without HTTPoison
end
end
end
Not sure if that suits your needs and how complex the httpoison integration is in your app.








