Why did some files get recompiled after I made a nonsubstantial change to a single file?
As an Elixir project becomes larger, recompilation during development can become slower and slower,
because compile time dependencies creep in. Elixir's own mix xref
task can help to analyze the
situation, but identifying the dependencies involved can still be tedious.
This package contains a mix task that can answer the initial question.
Install as an archive:
mix archive.install github schnittchen/why_did_recompile
mix why_did_recompile --compiled=lib/my_project/a.ex --changed=lib/my_project/b.ex
will print out, if possible, a dependency chain from a.ex to b.ex that requires a.ex to recompile when b.ex changes.
Currently, export dependencies are treated as runtime dependencies.