虽然现在主要使用Elixir, 但现在大部分的依赖都是Erlang开发的, 所以还是有必要学习一下Erlang环境下的主要构建工具rebar3
, 版本3
在2
的基础上做了大量的变化. 下面简单介绍一下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
, release
和 plugin
.
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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。