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分析