Mix.Task.Compiler behaviour

This module defines the behaviour for a Mix task that does compilation.

A Mix compiler task can be defined by simply using Mix.Task.Compiler in a module whose name starts with Mix.Tasks.Compile. and defining the run/1 function:

defmodule Mix.Tasks.Compile.MyLanguage do
  use Mix.Task.Compiler

  def run(_args) do
    :ok
  end
end

The run/1 function returns an atom indicating the status of the compilation, and optionally can also return a list of “diagnostics” such as warnings or compilation errors. Doing this enables code editors to display issues inline without having to analyze the command-line output.

If the compiler uses manifest files to track stale sources, it should define manifests/0, and if it writes any output to disk it should also define clean/0.

A compiler supports the same attributes for configuration and documentation as a regular Mix task. See Mix.Task for more information.

Summary

Callbacks

clean()

Removes build artifacts and manifests

manifests()

Lists manifest files for the compiler

run(list)

Receives command-line arguments and performs compilation. If it produces errors, warnings, or any other diagnostic information, it should return a tuple with the status and a list of diagnostics

Callbacks

clean() (optional)

clean() :: any()

Removes build artifacts and manifests.

manifests() (optional)

manifests() :: [Path.t()]

Lists manifest files for the compiler.

run(list)

run([binary()]) ::
  :ok | :noop | {:ok | :noop | :error, [Mix.Task.Compiler.Diagnostic.t()]}

Receives command-line arguments and performs compilation. If it produces errors, warnings, or any other diagnostic information, it should return a tuple with the status and a list of diagnostics.

© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/mix/1.6.6/Mix.Task.Compiler.html