rebar3使用本地依賴

eeeggghit發表於2020-10-10

簡介

erlang提供了rebar3來管理依賴和編譯專案,結合git和hex,專案的依賴管理會非常簡單。專案本體也會非常精簡。但是也帶來了問題就是專案本身必須依賴外網才可以構建,因為deps庫一般都是從git或者hex上進行的下載。如果是內網環境下,就無法進行構建,只能提前將依賴在外網環境下下載完整再本地進行構建。
同樣如果網路環境比較差,國內連線hex的本站速度也比較慢,意味著每次構建都需要很久,因此如果能將依賴從本地進行拉取就會快很多。

實現

rebar3提供了外掛功能,在有了外掛功能後,就可以在不修改rebar3本體邏輯的情況下,對rebar3進行擴充套件,因此可以使用外掛實現上面所述的將所有需要拉取的地址都替換成自己的本地git地址

本地git化外掛

只需要在專案頂層的rebar.config中加入

{plugins, [
    {rebar3_local_deps, ".*",
       {git, "git://github.com/yidayoung/rebar3_local_deps.git", {branch, "master"}}}
]}.
{local_deps_url, "http://127.0.0.1:9001/r/"}.

local_deps_url欄位是本地的git伺服器字首,例如如果我們要下載ct庫,無論rebar.config中指定的ct庫的下載方式是啥,都會替換成http://127.0.0.1:9001/r/ct.git 下載。
包括專案本體的依賴和依賴的依賴,專案中所有的拉取動作的地址都會被替換。

外掛的下載地址在本地git伺服器搭建後,也可以直接替換成自己的git伺服器地址,這樣就完全脫離外網

git服務搭建

本地git服務搭建有很多方法,gitbit, gitlab都是比較成熟的方案了,安裝也可很簡單。
搭建完成後需要將 遠端的git本體進行克隆而不是程式碼。可以直接將檔案克隆到git伺服器的專案資料夾,重新整理快取後,就可以直接訪問,不需要在git伺服器側進行專案建立和程式碼上傳

git clone --bare xxxxx.git

關於hex

rebar3引入了hex管理deps,平時在deps中看到的沒有地址標註的,只有專案名,或者專案名帶版本的,都是hex庫,hex是直接從hex網址進行拉取的,國內拉取一般都會很慢,但是如果只是為了解決hex庫慢的問題,可以簡單的替換hex映象地址,官方提供了兩個方案

  • 在rebar.config中新增配置項{rebar_packages_cdn, "https://hexpm.upyun.com"}
  • 設定環境變數

%% 命令執行前設定環境變數
HEX_CDN=https://repo.hex.pm rebar3 update
或者直接配置到系統中都可以

相關文章