View Source mix compile (Mix v1.15.0)
The main entry point to compile source files.
It simply runs the compilers registered in your project and returns a tuple with the compilation status and a list of diagnostics.
Before compiling code, it performs a series of checks to ensure all
dependencies are compiled and the project is up to date. Then the
code path of your Elixir system is pruned to only contain the dependencies
and applications that you have explicitly listed in your mix.exs
.
configuration
Configuration
:build_embedded
- this option was used to copy all code and priv content to the_build
directory. However, this option no longer has an effect as Elixir will now copy those at release time:compilers
- compilers to run, defaults toMix.compilers/0
, which are[:yecc, :leex, :erlang, :elixir, :app]
.:consolidate_protocols
- whentrue
, runs protocol consolidation via themix compile.protocols
task. The default value istrue
.:build_path
- the directory where build artifacts should be written to. This option is intended only for child apps within a larger umbrella application so that each child app can use the common_build
directory of the parent umbrella. In a non-umbrella context, configuring this has undesirable side-effects (such as skipping some compiler checks) and should be avoided.
compilers
Compilers
To see documentation for each specific compiler, you must
invoke help
directly for the compiler command:
$ mix help compile.elixir
$ mix help compile.erlang
You can get a list of all compilers by running:
$ mix compile --list
command-line-options
Command line options
--erl-config
- path to an Erlang term file that will be loaded as Mix config--force
- forces compilation--list
- lists all enabled compilers--no-all-warnings
- prints only warnings from files currently compiled (instead of all)--no-app-loading
- does not load .app resource file after compilation--no-archives-check
- skips checking of archives--no-compile
- does not actually compile, only loads code and perform checks--no-deps-check
- skips checking of dependencies--no-elixir-version-check
- does not check Elixir version--no-optional-deps
- does not compile or load optional deps. Useful for testing if a library still successfully compiles without optional dependencies (which is the default case with dependencies)--no-prune-code-paths
- do not prune code paths before compilation, this keeps the entirety of Erlang/OTP available on the project starts--no-protocol-consolidation
- skips protocol consolidation--no-validate-compile-env
- does not validate the application compile environment--return-errors
- returns error status and diagnostics instead of exiting on error--warnings-as-errors
- exit with non-zero status if compilation has one or more warnings
Link to this section Summary
Functions
Returns all compilers.
Link to this section Functions
Returns all compilers.