WhyDidRecompile

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.

Installation

Install as an archive:

mix archive.install github schnittchen/why_did_recompile

Usage

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.

Scope

Currently, export dependencies are treated as runtime dependencies.