Mix.Task.Compiler behaviour View Source

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.

Link to this section Summary

Callbacks

Removes build artifacts and manifests

Lists manifest files for the compiler

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

Link to this section Callbacks

Link to this callback

clean() View Source (optional)
clean() :: any()

Removes build artifacts and manifests.

Link to this callback

manifests() View Source (optional)
manifests() :: [Path.t()]

Lists manifest files for the compiler.

Link to this callback

run(list) View Source
run([binary()]) :: {: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.