Mix v1.10.4 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

  • --verbose - prints each file being compiled
  • --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)
  • --profile - if set to time, outputs timing information of compilation steps
  • --all-warnings - prints warnings even from files that do not need to be recompiled
  • --tracer - adds a compiler tracer in addition to any specified in the mix.exs file


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

  • :elixirc_options - compilation options that apply to Elixir's compiler. See Code.put_compiler_option/2 for a complete list of options. These options are often overridable from the command line using the switches above.