An Elixir library I'm writing has two custom mix tasks, one intended to be used by users who have made my library a dependency of their project, one intended to be used only within my project.
The problem here is that both mix tasks are available to users in their projects after they have added mine as a dep.
How do I prevent this? I tried to avoid the task in package: [ files: [ etc ] ]
in my Mix config, but it was still available in my test project that specifies my library as a dep via git.
Currently Mix does not really support the idea of private tasks directly. A couple options are:
Define it in your
mix.exs
(for example, as an alias) or create it insidetasks/my_task.exs
andCode.require_file "tasks/my_task.exs"
on top of yourmix.exs
. The second option is not great as you will execute the code that defines a task on every mix command you useJust use a script. Create a
scripts
directory if you want and then, when you want to run it, just do:mix run scripts/do_x.ex arg1 arg2 arg3