Description
Scenario: split large schema module to multiple smaller submodules, use import_types
and import_fields
to combine them.
This introduces compile-time dependency of combined schema module on all submodules from which we import fields and types. Submodules however have runtime dependencies on various resolvers (which themselves have runtime dependencies all over the place). All there runtime dependencies become transitive compile-time dependencies of schema module, resulting in recompilation of large number of files on each change in any transitive compile-time dependency.
This blogs sums it quite nicely and I guess is still relevant with current version of absinthe: https://devonestes.com/trying-to-speed-up-compilation-with-absinthe
Not sure what could be done at absinthe level with respect to this issue... I guess we could obscure resolver calls so that compiler does not detect them as runtime dependencies, but not sure if that would introduce other issues. At least, there should probably be an "official" way on how to avoid described recompilation issue?