Mix v1.0.5 Mix.Tasks.Escript.Build

Builds an escript for the project.

An escript is an executable that can be invoked from the command line. An escript can run on any machine that has Erlang installed and by default does not require Elixir to be installed, as Elixir is embedded as part of the escript.

This task guarantees the project and its dependencies are compiled and packages them inside an escript.

Command line options

  • --force - forces compilation regardless of modification times
  • --no-compile - skips compilation to .beam files

Configuration

The following option must be specified in your mix.exs under :escript key:

  • :main_module - the module to be invoked once the escript starts. The module must contain a function named main/1 that will receive the command line arguments as binaries.

The remaining options can be specified to further customize the escript:

  • :name - the name of the generated escript. Defaults to app name.

  • :path - the path to write the escript to. Defaults to app name.

  • :app - the app to start with the escript. Defaults to app name. Set it to nil if no application should be started.

  • :embed_elixir - if true embed elixir and its children apps (ex_unit, mix, etc.) mentioned in the :applications list inside the application function in mix.exs.

    Defaults to true for Elixir projects.

  • :shebang - shebang interpreter directive used to execute the escript. Defaults to "#! /usr/bin/env escript\n".

  • :comment - comment line to follow shebang directive in the escript. Defaults to "".

  • :emu_args - emulator arguments to embed in the escript file. Defaults to "".

There is one project-level option that affects how the escript is generated:

  • language: :elixir | :erlang - set it to :erlang for Erlang projects managed by mix. Doing so will ensure Elixir is not embedded by default. Your app will still be started as part of escript loading, with the config used during build.

Example

defmodule MyApp.Mixfile do
  def project do
    [app: :myapp,
     version: "0.0.1",
     escript: escript]
  end

  def escript do
    [main_module: MyApp.CLI]
  end
end

Summary

Functions

Callback implementation for Mix.Task.run/1

Functions

run(args)

Specs

run(OptionParser.argv) :: :ok | :noop

Callback implementation for Mix.Task.run/1.