为啥 MIX 依赖在依赖的语义版本之前有一个“~>”?
Posted
技术标签:
【中文标题】为啥 MIX 依赖在依赖的语义版本之前有一个“~>”?【英文标题】:Why does MIX dependencies have a "~>" before the semantic version of the dependency?为什么 MIX 依赖在依赖的语义版本之前有一个“~>”? 【发布时间】:2018-05-03 19:19:55 【问题描述】:在mix.exs
上,您可以声明如下依赖项:
def deps do
[:plug, "~> 1.0"]
end
为什么它需要有“~>”而不是元组第二部分的简单版本。
我看到如果它从 git 获取依赖,你可以这样写依赖:
def deps do
[:plug, git: "git://github.com/elixir-lang/plug.git"]
end
【问题讨论】:
【参考方案1】:Version 模块支持这个花哨的箭头。它以数字设置的精度四舍五入您的依赖关系,该数字与最具体的数字相邻。
来自文档:
# 2.0.0 and later until 2.1.0 ">= 2.0.0 and < 2.1.0"
由于上面的例子是这样一个常见的需求,所以可以表示为:
"~> 2.0.0"
查看Version
模块中的更多示例。
基本上这是为了您的方便,因为它允许您在执行mix deps.upgrade
时自动升级您的部门,但它可以让您控制升级 - 您可以下载升级,这会导致您当前的代码库崩溃等。
【讨论】:
以上是关于为啥 MIX 依赖在依赖的语义版本之前有一个“~>”?的主要内容,如果未能解决你的问题,请参考以下文章
如何下载非依赖工件作为语义版本控制的 buildScript 块的一部分