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 |
有關抑制告警的說明,請參閱Dialyzer文檔中的Requesting or Suppressing Warnings in Source Files部分。
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分析