【发布时间】:2018-11-30 11:43:42
【问题描述】:
是否可以为特定环境排除/添加存在于 lib/ 文件夹中的模块?
defp elixirc_paths(:prod), do: ["lib", "lib/only-prod-module]
defp elixirc_paths(_), do: ["lib"]
看起来也被添加到其他环境中,因为它存在于 lib 中,是否可以以某种方式排除它而无需将其添加到 lib 模块之外?
【问题讨论】:
-
这样的用例是什么?您可以将模块定义包装在
if Mix.env() == :prod do ... end中,它只会为:prod环境编译。但根据我的经验,这实际上并不是您想要的解决方案。 -
只是好奇你是否可以排除路径或在 elixirc_path 上添加某种正则表达式,现在并没有真正将这种方法用于任何用例,例如我可以只使用 defp elixirc_paths(:prod), do: ["lib", "prod/only-prod-module] 但这意味着定义不同的路径
-
@JustinWood 但这看起来不可维护,是吗?为给定环境指向和编译整个文件或文件夹似乎更容易。
-
@Sebastialonso 我在评论中说这通常不是您想要做的。我询问了用例,以便我可以尝试提出更好的解决方案。基本上,我认为这是XY Problem 的一个例子。
-
@JustinWood 我正在考虑的一个用例是一些“配置管理”代码,例如为我的项目创建和管理 VPS 实例(在几个“生产”环境中)。我不需要或不希望在实际的
:prod环境应用程序代码中使用该代码,并且将通过MIX_ENV=ops iex -S mix专门在iex中运行该代码。
标签: elixir elixir-mix