Phoenix のプロジェクトの mix.exs を見れば一目瞭然なのですが、project/0
が返すキーワードリストに、:elixirc_paths
をキーにコンパイル対象のパスのリストを値にして追加すると、それらのパスがコンパイル対象になります。
# mix.exs def project do [ app: :sample, version: "0.1.0", elixir: "~> 1.6", elixirc_paths: ["lib", "test/support"], # `lib` と `test/support` をコンパイル対象にする start_permanent: Mix.env() == :prod, deps: deps() ] end
Phoenix プロジェクトと同じように書くと、ビルド環境によって対象を切り替えることができます。
# mix.exs def project do [ app: :sample, version: "0.1.0", elixir: "~> 1.6", elixirc_paths: elixirc_paths(Mix.env()), start_permanent: Mix.env() == :prod, deps: deps() ] end def elixirc_paths(:test), do: ["lib", "test/support"] # test 環境の時は `test/support` をコンパイル対象に含める def elixirc_paths(_), do: ["lib"]
ドキュメントの中にはなぜか記述が見つからない。
コードを追いかけてみるとデフォルトでは ["lib"]
になっているのがわかります。