在Elixir Mix Task中以编程方式确定依赖版本。

问题描述 投票:0回答:1

有什么方法可以在自定义的Mix任务中以编程方式显示已安装的依赖关系的当前版本?

我有一个包,其中包括一些运行一些生成器命令的自定义Mix任务。 我想确定我的hex包的用户正在运行的Phoenix版本,这样我就可以在我的生成器任务中有条件地执行一些逻辑。

我的hex包依赖于Phoenix,但也支持Phoenix 1.3、1.4和最新发布的1.5。

我意识到我可以发布一个新版本的hex包,它有一个固定的依赖凤凰1.5的要求,同时仍然回移植我的包的旧的主要版本的变化;但我宁愿暂时保持一个单一的主线分支,支持尽可能多的版本。

有什么 "体面 "的方法可以做到这一点吗,或者我应该解析一下 mix.lock 我自己在mix任务里面的锁文件? 这样做似乎很脆弱,而且我不认为我的包代码应该到处搜索并解析它所包含的一个更大项目的锁文件。

elixir phoenix mix hex-pm
1个回答
0
投票

我还没有针对你的具体要求进行测试,但你也许可以这样做。

app_version =
  Application.spec(:phoenix)[:vsn]
  |> List.to_string()

下面的片段可能也很有用: 如果你有一个模块,但你不知道它所属的atom应用名称。

app_name = Application.get_application(SomeApp)

请看 申请文件 了解更多详情。

希望对大家有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.