为Elixir包设置默认应用程序配置

She*_*yar 3 elixir

我正在写一个Elixir包,我想指定一个默认的应用程序配置(用户可以通过在其中指定自定义值来覆盖config.exs).我原本把它们放在我的项目中,config.exs直到我意识到不会为依赖于这个库的项目加载配置文件.

配置文件本身告诉您:

此配置在任何依赖项之前加载,并且仅限于此项目.如果另一个项目依赖于此项目,则不会加载此文件也不会影响父项目.因此,如果要为第三方用户提供应用程序的默认值,则应在"mix.exs"文件中完成.


我一直在努力了解如何在我的指定应用程序默认值mix.exs并使用它们.我目前的解决方案是使用Application.get_env/3默认参数,但这对我来说似乎不对,因为应用程序默认值会分散在代码中.

Application.get_env(:my_library, :arg, "default value")
Run Code Online (Sandbox Code Playgroud)

那么,我如何指定应用程序默认值mix.exs

Pat*_*ity 7

您可以为应用程序设置默认配置值mix.exs- 当在另一个项目中用作依赖项时,这些值也可用.例如:

def applications do
  [applications: [:logger, ...],
   mod: {MyLibrary.Application, []},
   env: [arg: "default value"]]
end
Run Code Online (Sandbox Code Playgroud)