1. 程式人生 > >rebar3使用介紹(三)命令

rebar3使用介紹(三)命令

本篇主要介紹rebar3的命令

as

它使配置檔名稱和任務列表在該配置檔案下執行. 舉個例子,你可以配置dev模式和relese模式下不同的配置,然後rebar3 as dev release 就可以按照dev模式釋出,同樣可以用release釋出

rebar.config

{profiles, [
    {dev, [
        {plugins, [
            {rebar3_gpb_plugin, "2.3.2"}
        ]},
        {provider_hooks, [
            {pre, [
                {compile, {protobuf, compile}},
                {clean, {protobuf, clean}}
            ]}
        ]}
    ]},
    {test, [
        {erl_opts, [nowarn_export_all]},
        {ct_opts, [{create_priv_dir, auto_per_tc},
                   {config, "test/ct.config"}]},
        {plugins, [
            rebar3_proper
        ]},
        {deps, [
            {proper, {git, "git://github.com/proper-testing/proper", {tag, "v1.3"}}}
        ]},
        {extra_src_dirs, ["test/support"]}
    ]}
]}.

根據profiles欄位的值,可以自定義自己的釋出模板

compile

rebar3的編譯命令會自己確保依賴到位,不像rebar需要自己get-deps,除了deps部分其他和rebar一致,編譯erl,app.src

clean

rebar3 clean 預設只會清理主app下的檔案,clean也支援as,rebar3 as test clean 將只會清除test模式下的檔案 如果想要清除deps的檔案,加上 --all即可

Option Type Description
–all/-a none 清除所有app,包括依賴項的構建檔案
–profile/-p string 等價於rebar3 as clean

ct

ct命令將會執行test/目錄下的測試用例 ct命令和erlang的是基本一致的,支援的擴充套件引數可以看 注意rebar 加引數用的是 – erlang用的-

cover

cover 一般配合ct或者eunit來用,rebar3 do ct, cover, rebar3 do eunit, cover 或者 rebar3 do eunit, ct, cover

cover 是否開啟配置在rebar.config中的cover_enabled欄位,預設是false

%% Whether to enable coverage reporting where commands support cover. Default
%% is `false'
{cover_enabled, false}.

cover 命令支援以下擴充套件引數:

Option Description
–reset/-r 重置所有資料
–verbose / -v 在終端中列印覆蓋率分析。

通過新增{cover_excl_mods,[Modules]}到配置檔案,可以從程式碼覆蓋中將特定模組列入黑名單。通過新增{cover_excl_apps, [AppNames]}到配置檔案,可以將特定應用程式列入黑名單。

deps

列出依賴項,無論它們是源依賴項還是程式包依賴項,以及它們是否已鎖定。鎖定但未與鎖定檔案匹配的那些後跟星號(*)

do

do 允許你序列執行多個命令,以逗號分隔。例:rebar3 do a, b, c

dialyzer

構建並保持最新的合適PLT,並使用它來對當前專案進行成功的型別分析。

Option Description
–update-PLT / -u 啟用更新PLT。預設值:true
–succ-typings/-s 啟用成功鍵入分析。預設值:true

PLT檔案被命名_<otp_release>_plt; 基礎PLT是PLT,包含專案PLT通常需要的核心應用程式。每個OTP版本建立一個基本PLT並存儲在其中base_plt_location。然後使用基礎PLT來構建專案PLT。

可以將以下(可選)配置新增到rebar.config中的選項dialyzer中:

Option Description
warnings 透析器警告列表
get_warnings 更改PLT檔案時顯示警告(布林值)
plt_apps 用於確定哪些包含在PLT檔案的應用程式的策略,top_level_deps以僅包括直接依賴或all_deps包括所有巢狀的依賴(直接依賴的應用程式中列出applications和included_applications他們的.app檔案。)
plt_extra_apps 要包含在PLT檔案中的應用程式base_plt_apps列表(將在列表中的應用程式)
plt_location PLT檔案的位置,local儲存在配置檔案的基本目錄(預設)或自定義目錄中。
plt_prefix PLT檔案的字首,預設為“rebar3”
base_plt_apps 要包含在基本PLT檔案中的應用程式列表
base_plt_location 基本PLT檔案的位置,global儲存在$ HOME / .cache / rebar3(預設)或自定義目錄中
base_plt_prefix 基本PLT檔案的字首,預設為“rebar3”

edoc

生成doc文件,具體看

escriptize

生成包含專案及其依賴項的BEAM檔案的escript可執行檔案。

Config Option Type Description
escript_main_app atom 要轉到escript的應用程式的名稱。如果只有一個,則預設為頂級應用。使用傘狀專案(具有多個頂級應用程式)時,必須指定此值。
escript_name string 生成的escript的名稱,以及boot(Module:main(_))的預設模組名稱。預設值為escript_main_app
escript_incl_apps list of atoms 除主應用程式及其依賴項(來自應用程式檔案)之外,要包含在escript存檔中的應用程式列表。預設為[]
escript_emu_args string Escript模擬器引數(%%!在escript宣告之後)。該字串必須%%!以換行符開頭並以換行符結束。一個示例字串"%%! +sbtu +A0\n"。預設值為 “%%! -escript main MainApp\n”
escript_shebang string 要執行的escript檔案的位置。預設為"#!/usr/bin/env escript\n"。行結束標記必須包含在字串中。
escript_comment string 任意comment放入生成的escript中。必須在末尾包含換行標記。預設為%%\n。

要覆蓋escript的預設模組名稱(預期與之相同escript_name),請新增-escript main Module到escript_emu_args

示例escript配置來自relx:

{escript_emu_args, "%%! +sbtu +A0 -noinput\n"}.
{escript_incl_apps, [getopt, erlware_commons, bbmustache, providers, relx]}.

eunit

執行專案應用程式的eunit測試。支援引數如下:

Option Type Description
–cover/-c Boolean 生成cover資料
–verbose/-v Boolean 詳細輸出
–app Comma separated list of strings 執行測試的應用程式列表。相當於EUnit的[{application, App}]。
–suite Comma separated list of strings 要執行的測試套件列表。相當於EUnit的[{module, Suite}]。
–file / -f Comma separated list of strings 要執行的檔案列表(例如test/my_tests.beam),相當於Eunit的[{file, File}]。

get-deps

rebar3 已結不需要這個命令,compile會呼叫get-deps

help

檢視某個命令的幫助, rebar3 help clean

new

基礎用法章節中講過,這裡就不再講了 rebar3 new 使用 --force/-f 可以強制覆蓋已有檔案,不過還是推薦刪除重新生成

path

列印在當前配置檔案中構建目錄的路徑。支援選項如下:

Option Type Description
-app Comma separated list of strings 逗號分隔的應用程式列表,用於返回路徑。
–base none 返回指定專案當前配置檔案的路徑
–bin none 返回指定專案當前配置檔案的路徑
–ebin none 返回指定專案當前配置檔案的路徑
–lib none 返回指定專案當前配置檔案的路徑
–priv none 返回指定專案當前配置檔案的路徑
–separator/-s string 在多個返回路徑的情況下,用於連線它們的分隔符。
–src none 返回指定專案當前配置檔案的路徑
–rel none 返回指定專案當前配置檔案的路徑

pkgs

列出可用的包。

release

構建專案釋出。使用rebar3 help release來檢視支援引數列表

relup

從2個版本建立一個relup, 使用 rebar3 help relup 檢視支援引數列表

report

生成上下文資料以包含在錯誤報告中,如果你要給rebar3上報自己的異常,使用reprot可以快速採集環境資訊

shell

使用專案應用程式和路徑中的deps執行shell。

使用此命令引導的shell具有執行的代理,允許動態執行rebar3命令,例如r3:compile()或r3:upgrade(),並自動重新載入新模組。通過呼叫可以訪問特定的名稱空間r3:do(Namespace, Command)。shell不支援傳參

Option Type Description
–config string 支援載入配置檔案(如果有)。預設是sys_config
–name/–sname atom 使用erl -name/-sname 來啟動節點
–setcookie string 指定cookie,同erl -setcookie
–script string 在應用程式啟動之前要執行的escript的路徑
–apps string 以逗號分隔的要引導的應用程式名稱列表。

如果relx做了配置,則預設為relx版本中的應用程式。

tar

構建由專案構建的釋出的壓縮tar存檔, rebar3 help tar 檢視詳細內容

tree

列印專案構件樹

lock

獲取要新增到rebar.lock檔案中的未構建的依賴項。它們會被下載,但它們的構建指令碼都不應該執行。雖然這不一定適用於pre / post hooks和dep plugins。

unlock

解鎖依賴項。如果沒有提到依賴項,則該命令將解鎖所有依賴項。如果列出任何特定的頂級依賴項(以逗號分隔)作為引數,那麼這些依賴項將被解鎖。

然後生成新的鎖定檔案,或者在沒有鎖定的情況下刪除現有的鎖定檔案。

當從rebar.config中取出一個或多個依賴項時,應使用此命令,但保留在鎖定檔案中。也就是你要刪除依賴項的時候,用來清理rebar.lock檔案

update

更新包索引。

upgrade

升級依賴項並相應地更新鎖定檔案。 rebar3 upgrade [] 如果沒指定,則所有的都會被更新

version

列印rebar3 和erlang的版本

$ ../rebar3 version
rebar 3.7.0-rc2+build.4175.ref83d01b5 on Erlang/OTP 19 Erts 8.0

xref

執行xref分析