Allow forcing specific compilers, such as --force-elixir, --force-app, etc
Module
mix compile
58 changes across 32 versions
Changes by version
Add flag --no-check-cwd to skip compiler check to aid debugging
Warn if elixirc_paths is not a list of string paths
Address regression where umbrella children were compiled too early and without respecting compilation flags
Do not attempt to touch deleted files when compilation fails and then resumed with missing files
Debug the compiler and type checker PID when MIX_DEBUG=1 and compilation/verification thresholds are met
Add Mix.Tasks.Compiler.reenable/1
Fix bug where reverting changes to an external resource (such as HEEx template) after a compilation error would make it so the source module would not be compiled
Avoid failures when locking compilation across different users
Fix race condition when renaming files used by the compilation lock
--no-protocol-consolidation is deprecated in favor of --no-consolidate-protocols for consistency with mix.exs configuration
Support the --no-listeners option
Ensure only a single operating system process can compile at a given time
Ensure warnings from external resources are emitted with --all-warnings when files do not change
:warnings_as_errors configuration in :elixirc_options is deprecated. Instead pass the --warnings-as-errors flag to mix compile. Alternatively, you might alias the task: aliases: [compile: "compile --warnings-as-errors"]
Ensure compile paths are accessible during compilation
Ensure files with duplicate modules are recompiled whenever any of the files change
Update Mix compiler diagnostics documentation and typespecs to match the Elixir compiler behaviour where both lines and columns start from one (before it inaccurately said that columns started from zero)
Returning a four-element tuple as a position in Mix.Task.Compiler.Diagnostic
Ensure compile paths are accessible during compilation
Ensure :extra_applications declare in umbrella projects are loaded
Do not assume blake is always available
Track removed files per local dependency (this addresses a bug where files depending on modules from path dependencies always recompiled)
Ensure the current project is available on the code path after its Elixir sources are compiled
Guarantee yecc/leex are available when emitting warnings from previous runs
Fix bug where an external resource was deleted after its
Track removed modules and exports across local deps
Set --all-warnings by default
Reduce the amount of filesystem lookups for path dependencies by storing timestamps in manifests
Track digests of @external_resources
Include cwd in compiler cache key
Add --no-optional-deps to skip optional dependencies to test compilation works without optional dependencies
Include column information on error diagnostics when possible
Recompile project files when exports from dependencies change
Move Elixir version check to before deps are compiled, in order to give feedback earlier
Compile most recently changed files first
The :xref compiler is deprecated and it has no effect. Please remove it from your mix.exs file.
Do not discard tracers that are set programmatically
Support the __mix_recompile__?/0 callback for custom behaviour on when Mix should recompile a given module
Fix an issue where new protocol implementations would not propagate when running mix compile from an umbrella root
Do not write files to disk if --warnings-as-errors was given and warnings were emitted
Add --profile time flag to profile compilation steps
Do not filter out warning for external files from diagnostics
Raise readable error for mismatched sources during compilation
Ensure Erlang-based Mix compilers (erlang, leex, yecc) set valid position on diagnostics
Ensure compilation halts in an umbrella project if one of the siblings fail to compile
Do not include optional dependencies in extra applications as it is incompatible with shared deps in umbrellas
Include optional dependencies in :extra_applications
Ensure changes in deps propagate to all umbrella children - this fix a long standing issue where updating a dependency would not recompile all projects accordingly, requiring a complete removal of _build
Avoid time drift when checking and updating compiler manifest files
Properly mark top-level dependencies as optional and as runtime. This fixes a bug where Mix attempted to start optional dependencies of a package when those optional dependencies were not available
Avoid deadlock when a config has a timestamp later than current time
Improve support for external build tools such as rebar
Properly track config files in umbrella projects and recompile when any relevant umbrella configuration changes
Define a behavior for Mix compiler tasks and return diagnostics from compiler tasks
Track struct dependencies between files and recompile them only if the struct changes
Recompile projects if OTP version changes
Automatically infer the list of applications for Mix projects