在混合文件依赖项中,“ runtime:false”是什么意思?

tor*_*tte 6 elixir-mix elixir erlang-otp

mix deps文档中:

:runtime-依赖项是否是运行时应用程序的一部分。如果您的mix.exs文件中:applications没有提供密钥def application,则Mix会自动将所有依赖项作为运行时应用程序包括在内,除非runtime: false给出了。默认为true。

根据mix compile.app文档:

:applications-您的应用程序在运行时依赖的所有应用程序。默认情况下,此列表是根据您的依赖项自动推断出来的。Mix和其他工具使用应用程序列表来启动依赖关系,然后再启动应用程序本身。

这是否意味着添加runtime: false依赖项将使其不能作为应用程序监视树的一部分启动,但其功能将在编译时可用?

She*_*yar 5

就像您提到的,情况确实如此。runtime: false启动主应用程序时,标记依赖项不会将其作为应用程序监视树的一部分启动。

在Elixir 1.4之前,我们必须通过将它们放入applications以下位置来分别指定需要启动的应用程序:

def application do
  [applications: [:logger, :bamboo]]
end
Run Code Online (Sandbox Code Playgroud)

现在,我们extra_applications改为使用并标记特定的依赖项,runtime: false以在运行时将其从应用程序列表中删除。

  • 历史的旁注特别有帮助,谢谢! (2认同)