gpt4 book ai didi

dependencies - Elixir - 如何动态获取项目中使用的库版本?

转载 作者:行者123 更新时间:2023-12-02 03:46:09 25 4
gpt4 key购买 nike

我在获取我从事的其中一个项目中使用的依赖项版本时遇到问题。我想在我的代码中获取此依赖项的版本。有什么简单的方法可以做到这一点吗?

我尝试了以下方法:

{:ok, dependency_version} = Mix.Dep.cached 
|> Enum.filter(fn(d) -> d.app == :dependency_name end)
|> hd
|> Map.fetch!(:status)

但是正如我在 Mix.dep.cached 的文档中所读到的,如果设置了 MIX_NO_DEPS,这可能会返回一个空数组。除了创建一个返回自身版本的依赖函数之外,还有什么可靠的方法可以做到这一点吗?

最佳答案

您可以使用 Application.spec/2 获取依赖项的版本,将依赖项的名称作为第一个参数传递,将 :vsn 作为第二个参数传递。

来自 Ecto master 的示例应用程序:

$ iex -S mix
iex(1)> Application.spec(:ecto, :vsn)
'3.0.0-dev'
iex(2)> Application.spec(:postgrex, :vsn)
'0.14.0-dev'

关于dependencies - Elixir - 如何动态获取项目中使用的库版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46695987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com