Rebar3: 入门上手

虽然现在主要使用Elixir, 但现在大部分的依赖都是Erlang开发的, 所以还是有必要学习一下Erlang环境下的主要构建工具rebar3, 版本32的基础上做了大量的变化. 下面简单介绍一下rebar3的上手入门过程.

安装

两种安装方式, 可以从源代码安装, 也可以直接下载二进制程序放在$PATH路径中.

二进制安装

在这里下载. 运行chmod +x确保可执行, 复制到$PATH环境变量中的路径中.

创建~/bin目录, 复制rebar3到该目录中, 并添加该路径到环境变量$PATH. 在 ~/.bashrc~/.zshrc中添加如下代码行:

export PATH=~/bin/:$PATH

源码安装

$ git clone https://github.com/erlang/rebar3.git
$ cd rebar3
$ ./bootstrap

在当前目录会生成一个rebar3文件. 把他添加到$PATH中即可.

项目类型

rebar3 定义了四种类型的项目, 分别是 lib, app, releaseplugin.

Type Description
lib 作为库项目, 一般不能独立运行, 只是作为其他应用的一个组件
app 能够独立运行的erlang应用程序
release 会创建一个发布包
plugin 作为一个插件

依赖锁的管理

下面的表格显示了管理锁的几个命令和说明

Command Description
rebar3 deps 查看依赖和锁的状态
rebar3 unlock 解锁
rebar3 lock 加锁
rebar3 tree 查看依赖关系

例子:

rebar3 deps

→ rebar3 deps
cowboy* (package 1.0.1)

rebar3 tree

→ rebar3 tree
...
|- bootstrap-0.0.2 (git repo)
|- dirmon-0.1.0 (project app)
|- file_monitor-0.1 (git repo)
|- peeranha-0.1.0 (git repo)
|  |- gproc-git (git repo)
|  |- interclock-0.1.2 (git repo)
|  |  |- bitcask-1.7.0 (git repo)
|  |  |  |- lager-2.1.1 (hex package)
|  |  |  |  |- goldrush-0.1.6 (hex package)
|  |  |- itc-1.0.0 (git repo)
|  |- merklet-1.0.0 (git repo)
|- recon-2.2.2 (git repo)
|- uuid-1.5.0 (git repo)
|  |- quickrand-1.5.0 (git repo)

提取(Extracting)和升级(Upgrading)

安装和运行rebar3的另外一个方式是使用local命名空间. rebar3 local install踢进去escript的内容到~/.cache/rebar3/lib并创建一个shell脚本~/.cache/rebar3/bin/rebar3:

$ ./rebar3 local install
===> Extracting rebar3 libs to ~/.cache/rebar3/lib...
===> Writing rebar3 run script ~/.cache/rebar3/bin/rebar3...
===> Add to $PATH for use: export PATH=$PATH:~/.cache/rebar3/bin
$ rebar3 local upgrade
===> Extracting rebar3 libs to ~/.cache/rebar3/lib...
===> Writing rebar3 run script ~/.cache/rebar3/bin/rebar3...
===> Add to $PATH for use: export PATH=$PATH:~/.cache/rebar3/bin

创建新项目

$ rebar3 new release myrelease
===> Writing apps/myrelease/src/myrelease_app.erl
===> Writing apps/myrelease/src/myrelease_sup.erl
===> Writing apps/myrelease/src/myrelease.app.src
===> Writing rebar.config
===> Writing config/sys.config
===> Writing config/vm.args
===> Writing .gitignore
===> Writing LICENSE
===> Writing README.md

你可能感兴趣的:(rebar3)