是否可以为Elixir提供自定义混合文件?

时间:2017-05-31 02:50:19

标签: elixir mix

在我涉及Elixir的项目中,我经常要添加到我的mix.exs文件中的内容,例如添加我自己的ENV等。添加这些项目通常很麻烦并且必须添加它们到我的.gitignore。我的问题是,是否可以使用custom_mix.exs之类的内容,我可以从mix拨打,我可以在其中放入所有自定义设置,这些设置将覆盖mix.exs中定义的设置? custom_mix.exs文件不会置于git下,可永久置于.gitignore下,如果未找到mix.exs,则custom_mix.exs不会出错。

2 个答案:

答案 0 :(得分:4)

虽然史蒂夫帕伦的答案是完全正确的,但你首先做错了。这绝对看起来像X/Y problem

为什么要将{em>设置放在mix.exs文件中,而为此特定用途config/config.exsconfig.exs内置支持您正在寻找的内容,请查看例如针对不同的环境执行不同的配置。

mix.exs文件旨在指定一般应用程序行为,您当前要实现的目的是使应用程序行为未确定

您可以尝试以这种方式解决的可能问题,即依赖应用程序的版本控制或对外部mix.exs代码进行一些拼凑。尽管如此,解决和打击核心灵药项目文件的方法仍然是一个坏主意。您可以为原始mix.exs文件创建一个包装器,从您的版本调用它的函数并强制Elixir将您的版本与一些shell包装器一起使用,或类似。

答案 1 :(得分:1)

是的,很容易做到。将以下内容添加到mix.exs文件的最顶部

if File.exists?("./custom_mix.exs"), do: Code.require_file("./custom_mix.exs", __DIR__)

defmodule MyApp.Mixfile do
  # ...
  if function_exported?(CustomMix, :some_stuff, 0), 
    do: CustomMix.some_stuff()
end

然后像这样创建custom_mix.exs文件:

defmodule CustomMix do
  def some_stuff do
    #
  end
end
相关问题