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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章