# lfe-compile

[![][hex badge]][hex package]

[hex badge]:
[hex package]:

*The LFE rebar3 compiler plugin*

[lr3-logo]: resources/images/logo.png


#### Contents

* [About](#about-)
* [Build](#build-)
* [Use](#use-)

## About [↟](#contents)

Of all the [rebar3 plugins for LFE][org], this one is the most important (it's
also the only one not written in LFE itself). All other [LFE plugins][org]
depend upon this one.

Note that the [LFE rebar3 plugins][org] are not intended to be used as projects
or tools in their own right -- they need to be incorporated into another
project. You can add any [LFE rebar3 plugin][org] to your project, of course,
but the intent is for a new tool to wrap all of them. This tool is simply called
[ltool]. The hope is that it will replace all the functionality that currently
is built into [lfetool].

If you would like to use this plugin in your own project, without a wrapping
tool, see the ["Use"](#use-) section below.


## Build [↟](#contents)

$ rebar3 compile

## Use [↟](#contents)

Add the plugin to your ``rebar.config``:

Via ``git``:

{plugins, [
    {git, "git://",
     {tag, "0.7.0"}}}

Via [Hex][hex package]:

{plugins, [
   {'lfe-compile', "0.7.0", {pkg, rebar3_lfe_compile}}

Then let ``rebar3`` know that you want to call ``lfe compile`` after the
rebar3 ``compile`` task. Do this by adding the following provider hook in
your ``rebar.config`` file:

{provider_hooks, [
   {post, [{compile, {lfe, compile}}]}

Then just compile from your project directory:

$ rebar3 compile

This will first download and build all your project dependencies, then compile
all Erlang-related files your project may have, and finally it will compile the
``.lfe`` files in your project.

If you would just like to to compile the ``.lfe`` files, you can use the
following command:

$ rebar3 lfe compile

For a more detailed description of how to use the [rebar3 LFE plugins][org],
refer to this [blog post]. Note that the version numbers in the post are
outdated now, but the general ideas are still valid.

[blog post]: