在我涉及Elixir的项目中,我经常要添加到我的mix.exs
文件中的内容,例如添加我自己的ENV
等。添加这些项目通常很麻烦并且必须添加它们到我的.gitignore
。我的问题是,是否可以使用custom_mix.exs
之类的内容,我可以从mix
拨打,我可以在其中放入所有自定义设置,这些设置将覆盖mix.exs
中定义的设置? custom_mix.exs
文件不会置于git下,可永久置于.gitignore
下,如果未找到mix.exs
,则custom_mix.exs
不会出错。
答案 0 :(得分:4)
虽然史蒂夫帕伦的答案是完全正确的,但你首先做错了。这绝对看起来像X/Y problem。
为什么要将{em>设置放在mix.exs
文件中,而为此特定用途config/config.exs
? config.exs
内置支持您正在寻找的内容,请查看例如phoenix-framework针对不同的环境执行不同的配置。
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