在Python的setup.py中,我们可以通过在test_requires需求下指定来指定应下载并作为egg安装的依赖项.在Elixir的混合中,如何指定我只想用于测试的依赖项?
Mix中的依赖项被放置在一个名为的私有函数中deps,它不是一个规则,它只是"section"中deps条目的默认值project,见下文:
def project do
[ app: :teste,
version: "0.0.1",
elixir: "~> 0.12.5-dev",
deps: deps ] # It's here!
end
Run Code Online (Sandbox Code Playgroud)
您可以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
...
Run Code Online (Sandbox Code Playgroud)
请注意defp deps(_),在上述所有函数都不是模式匹配的情况下,您仍然可以使用默认依赖关系列表.;)
然后你应该打电话给mix:
MIX_ENV=test mix deps.get
Run Code Online (Sandbox Code Playgroud)
这可能不是最好的方法,但我经常使用它,听起来很简单.
| 归档时间: |
|
| 查看次数: |
472 次 |
| 最近记录: |