在Python的setup.py中,我们可以通过在test_requires
下指定要求来指定应下载并作为egg安装的依赖项。在Elixir的混合中,如何指定我只想用于测试的依赖项?
答案 0 :(得分:6)
Mix中的依赖项放在名为deps
的私有函数中,它不是规则,它只是deps
“部分中project
条目的默认值”,见下文:
def project do
[ app: :teste,
version: "0.0.1",
elixir: "~> 0.12.5-dev",
deps: deps ] # It's here!
end
您可以为测试的依赖项声明deps
函数,并将上面的deps
条目设置为deps(Mix.env)
。这是告诉Mix使用来自deps
环境变量的参数调用MIX_ENV
的方法。
这个片段可以帮助您更好地理解,让我告诉您:
...
def project do
[ app: :teste,
version: "0.0.1",
elixir: "~> 0.12.5-dev",
deps: deps(Mix.env) ] # This is important :)
end
...
defp deps(:prod) do
[ { :a_production_ready_dependency, github: "xpto/cool_project" } ]
end
defp deps(:test) do
[ { :some_project, github: "some_project/other" } ]
end
defp deps(_) do
deps(:prod) ++ [ { :a_devel_dependency, github: "xpto_dev/cool_project_dev" } ]
end
...
请注意,在上述所有函数都没有模式匹配的情况下,您仍然可以使用defp deps(_)
的默认依赖关系列表。 ;)
然后你应该将mix
称为:
MIX_ENV=test mix deps.get
这可能不是最好的方法,但我经常使用它,听起来很简单。