Mix v1.8.2 mix compile.elixir View Source

Compiles Elixir source files.

Elixir is smart enough to recompile only files that have changed and their dependencies. This means if lib/a.ex is invoking a function defined over lib/b.ex, whenever lib/b.ex changes, lib/a.ex is also recompiled.

Note it is important to recompile a file's dependencies as there are often compile time dependencies between them.

Command line options

  • --force - forces compilation regardless of modification times
  • --docs (--no-docs) - attaches (or not) documentation to compiled modules
  • --debug-info (--no-debug-info) - attaches (or not) debug info to compiled modules
  • --ignore-module-conflict - does not emit warnings if a module was previously defined
  • --warnings-as-errors - treats warnings in the current project as errors and return a non-zero exit code
  • --long-compilation-threshold N - sets the "long compilation" threshold (in seconds) to N (see the docs for Kernel.ParallelCompiler.compile/2)
  • --all-warnings - prints warnings even from files that do not need to be recompiled


  • :elixirc_paths - directories to find source files. Defaults to ["lib"].

  • :elixirc_options - compilation options that apply to Elixir's compiler, they are: :ignore_module_conflict, :docs and :debug_info. By default, uses the same defaults as elixirc and they can always be overridden from the command line according to the options above.