Elixir Language

Mix

Create a Custom Mix Task

# lib/mix/tasks/mytask.ex
defmodule Mix.Tasks.MyTask do
  use Mix.Task

  @shortdoc "A simple mix task"
  def run(_) do
    IO.puts "YO!"
  end
end

Compile and run:

$ mix compile
$ mix my_task
"YO!"

Custom mix task with command line arguments

In a basic implementation the task module must define a run/1 function that takes a list of arguments. E.g. def run(args) do ... end

defmodule Mix.Tasks.Example_Task do
  use Mix.Task

  @shortdoc "Example_Task prints hello + its arguments"
  def run(args) do
    IO.puts "Hello #{args}"
  end
end

Compile and run:

$ mix example_task world
"hello world"

Aliases

Elixir allows you to add aliases for your mix commands. Cool thing if you want to save yourself some typing.

Open mix.exs in your Elixir project.

First, add aliases/0 function to the keyword list that the project function returns. Adding () at the end of the aliases function will prevent compiler from throwing a warning.

  def project do
    [app: :my_app,
     ...
     aliases: aliases()]
  end

Then, define your aliases/0 function (e.g. at the bottom of your mix.exs file).

  ...

  defp aliases do
    [go: "phoenix.server",
     trident: "do deps.get, compile, go"]
  end

You can now use $ mix go to run your Phoenix server (if you’re running a Phoenix application). And use $ mix trident to tell mix to fetch all dependencies, compile, and run the server.

Get help on available mix tasks

To list available mix tasks use:

mix help

To get help on a specific task use mix help task e.g.:

mix help cmd

This modified text is an extract of the original Stack Overflow Documentation created by the contributors and released under CC BY-SA 3.0 This website is not affiliated with Stack Overflow