[elixir! #0046] 由elixir的config文件直接生成 `sys.config`

1

通常, 在 elixir 项目 release 之后, 都会生成一个 sys.config 文件. 包含了项目的配置信息. 这个文件是由 erlang 的列表加元组层层嵌套而成, 对于不熟悉 erlang 的人来说, 可读性较差, 修改起来也很麻烦. 所以, 我们能否直接将 elixir 的配置文件转换成 sys.config , 或者是, 直接使用一个 mix 命令就可以生成 sys.config 文件呢?

2

首先, 在项目根目录新建一个 tasks/wizard.config.exs 文件(名字可以任意):

defmodule Mix.Tasks.Wizard.Config do
  @moduledoc """
  Convert elixir config file to erlang sys.config.
  """
  use Mix.Task

  def run(_opts) do
    config = Mix.Config.read!("config/config.exs")
    sys_config_string = :io_lib.format('~p.~n', [config]) |> List.to_string()
    File.write("sys.config", sys_config_string)
  end
end

可以看到, 我们创建了一个 mix 命令, 它的内容就是读取 elixir 的 config, 再写入sys.config 文件中.

3

要想使用这个 mix 命令, 我们还需要一些额外操作. 在 mix.exs 文件中加入(在 module 之外):

Enum.each Path.wildcard("tasks/*.exs"), &Code.require_file/1

然后运行 mix compile.

现在, 运行 mix wizard.config, 就可以在项目根目录发现新生成的 sys.config 文件了.

4

相关资料

generating an erlang sys.config from an elixir config.exs

你可能感兴趣的:(elixir)