Hex v0.21 发布

· 作者:Wojtek Mach

Hex v0.21 添加了注册表自托管、diff 和依赖项改进、mix hex.sponsor 任务等!

自托管

Hex 附带一个新的 mix hex.registry 任务,可轻松构建本地 Hex 注册表。有关更多信息,请参阅新的 自托管指南

Diff 和依赖项

新版本还带来了许多改进,以便更好地了解和管理 Mix 项目中的依赖项。

mix hex.outdated 现在可以轻松查看您使用的版本与最新版本之间依赖项的变化,它会输出一个链接,该链接将显示一个 diff 列表。

$ mix hex.outdated

mix hex.outdated output

导航到 https://hex.org.cn/l/T16Wu 将显示

diff.hex.pm output

mix hex.package diff 现在可以用来将当前使用的版本(在 mix.lock 中)与任意版本进行 diff。

$ mix hex.package diff ecto 3.5.1
(...)
@@ -1,15 +1,16 @@
 defmodule Ecto.MixProject do
   use Mix.Project

-  @version "3.5.0"
+  @version "3.5.1"
(...)

在 Mix 项目之外运行时,它现在允许更紧凑的版本范围规范。

$ mix hex.package diff ecto 3.5.{0,1}
(...)
@@ -1,15 +1,16 @@
 defmodule Ecto.MixProject do
   use Mix.Project

-  @version "3.5.0"
+  @version "3.5.1"
(...)

感谢 @halostatue@RyanSiu1995@xinz 为这些改进做出贡献!

赞助

Hex 现在可以轻松找到有赞助的包。运行下面的命令可以在当前项目中找到此类依赖项,以下是输出可能的样子

$ mix hex.sponsor
Dependency  Sponsorship
cowboy      https://github.com/sponsors/essen
oban        https://getoban.pro

如果要列出您的项目,请在您的 mix.exs(或 rebar.config 等)中添加一个 "Sponsor" 链接。

links: %{
  "GitHub" => "https://github.com/sorentwo/oban",
  "Sponsor" => "https://getoban.pro"
}

感谢 @philss 为此做出贡献!

mix hex.publish --replace

首先,快速提醒一下 Hex.pm 包更新策略,来自 https://hex.org.cn/docs/faq

Hex 存储库是不可变的(…)

不可变性规则有一些例外,包可以在包版本发布后的 60 分钟内或包首次发布后的 24 小时内更改或取消发布。

现在,当尝试重新发布现有版本时,您需要明确传递 --replace 标志。

值得一提的是,Hex.pm 私有包 没有重新发布的时间窗口,因此 --replace 选项在私有包中特别有用。

‘latest’ 分支

https://github.com/hexpm/hex 存储库现在维护一个 latest 分支,这意味着您可以通过以下方式安装 Hex:

$ mix archive.install github hexpm/hex branch latest

当您在使用运行 $ mix local.hex 的默认安装方法时遇到问题(例如 HTTP 错误)时,这很有用。

其他更改

Hex v0.21 带来了许多其他改进和错误修复,有关更改的完整列表,请参阅 CHANGELOG。感谢所有为此做出贡献的贡献者!