今天我们发布了 hex_core 的第一个版本,这是一个与 Hex.pm 和其他实现 Hex 规范的服务器进行交互的 Erlang 库。
在谈论 hex_core 之前,让我们问一个简单的问题:什么是 Hex?简短的答案是,它是 Erlang 生态系统中的包管理器。长答案是,Hex 可以指代以下几种不同的概念。
hex_core 的目标是成为 Hex 客户端和服务器使用的 Hex 规范的参考实现。
截至本公告发布,hex_core 包本身已在 Hex.pm 上提供。
创建一个新项目:rebar3 new lib example
将 hex_core
添加到 rebar.config
中
{deps, [
{hex_core, "0.1.0"}
]}
启动 shell 并统计发布到 Hex.pm 的所有包的数量
$ rebar3 shell
erl> inets:start(), ssl:start(),
erl> Config = hex_core:default_config(),
erl> {ok, {200, _, #{packages := Packages}}} = hex_repo:get_names(Config),
erl> length(Packages).
6764
创建一个新项目:mix new example
将 hex_core
添加到 mix.exs
中
defp deps() do
[{:hex_core, "~> 0.1"}]
end
启动 shell 并搜索与查询“riak”匹配的所有包
$ iex -S mix
iex> :inets.start() ; :ssl.start()
iex> config = :hex_core.default_config()
iex> options = [sort: :downloads]
iex> {:ok, {200, _, packages}} = :hex_api_package.search(config, "riak", options)
iex> Enum.map(packages, & &1["name"])
["riak_pb", "riakc", ...]
更多使用示例,请参阅 https://github.com/hexpm/hex_core 上的 README 文件。
在初始发布之后,我们计划与社区合作,将 hex_core 集成到他们的项目中并响应反馈。
我们还将专注于发布一个基于 hex_core 构建的最小 Hex 服务器,作为希望在自己的基础设施上运行 Hex 的人们的起点。敬请期待!