今天我們發布 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 的人的起點。敬請期待!