Skip to content


Folders and files

Last commit message
Last commit date

Latest commit



51 Commits

Repository files navigation

Alpaca - Rebar3 Plugin

A rebar3 plugin for compiling alpaca modules.

Alpaca modules will be compiled alongside Erlang ones. Pulling in other Alpaca libraries as dependencies as well as performing incremental builds is also supported.


From 0.2.8, Alpaca must be installed. Please see instructions at Essentially, you need to download an appropriate release from and ensure it is saved either in a well-known location (/usr/lib/alpaca, /usr/local/lib/alpaca, or /opt/alpaca) or install it wherever you wish and set the ALPACA_ROOT environmental variable to the path where you placed the Alpaca release.

Add the plugin to your rebar config:

{plugins, [
    {rebar_prv_alpaca, ".*", {git, "", {branch, "master"}}}

{provider_hooks, [{post, [{compile, {alpaca, compile}}]}]}.


Options can be passed to the Alpaca compiler via a {rebar_prv_alpaca, ... } section in your rebar.config file. Currently, the only option supported is for default imports (i.e. functions and types that can be implictly included in all your modules), e.g.

	[ { default_imports, [ {default, list_defaults} ] } ]

default_imports takes a list of tuples of {Module, Function}. In the instance above it might live in a module that looks like this:


list_defaults() ->
    Funs = [{assert, <<"equal">>}],
    Types = [{utils, <<"Result">>}],
    {Funs, Types}.

The list_defaults/0 function returns a tuple of {[FunctionRef], [TypeRef]}. These functions and types will then be injected into each of your modules.

The intention behind this is that most of the time you will simply wish to reference a "default" set of imports from Alpaca's own standard library (which is a work in prgress) but that ultimately you could pull in other standard libraries or save on explicitly importing functions and types you use everywhere.