Skip to content

Repository files navigation

ExRerun

Status

Build Status

Recompiles mix project on any change to the project src files.

The initial version of this project is inspired by the - currently unmaintained - remix project by AgilionApps: https://github.com/AgilionApps/remix

Installation

Install ex_rerun by adding it as a dependency to mix.exs.

def deps do
  [{:ex_rerun, "~> 0.3", only: :dev}]
end

If developing a cmd line tool or similar project that does not involve a running process/server, using mix run --no-halt or iex -S mix still works for keeping the ex_rerun process alive to monitor and recompile / retest your code.

Configuration

It is possible to configure ex_rerun using the following parameters:

Note: the example below shows the default values.

config :ex_rerun,
  scan_interval: 4000,
  silent: false,
  file_types: [".ex", ".exs", ".eex", ".json"],
  paths: ["lib", "priv"],
  ignore_pattern: nil,
  tasks: [:elixir]

where:

  • scan_interval specifies the number of ms to wait between rerun checks,
  • silent toggles whether to print the output of the tasks registered, every time ex_rerun runs,
  • file_types lists which file types that will trigger a rerun when changed,
  • paths lists which folders to monitor,
  • ignore_pattern specifies a regular expression matching files that should to be ignored even if they have a file type included in file_types, and
  • tasks enumerates the mix tasks to run each time a code modification occurs, possible built-in values are: :elixir, :test, :escript, where
    • :elixir recompiles Elixir source code (same as Mix.Tasks.Compile.Elixir),
    • :test reruns any mix tests in the project (same as Mix.Tasks.Test), and
    • escript rebuilds a escript file (same as Mix.Tasks.Escript.Build).

Furthermore, tasks can also include custom mix tasks. For example, the hex package elm_compile defines the Mix.Tasks.Compile.Elm task which allows mix to also compile Elm files in a mix project. An example project config using ex_rerun and elm_compile might look like so:

config :ex_rerun,
  file_types: [".elm", ".ex", ".exs", ".eex", ".json"],
  paths: ["lib", "priv", "web"],
  ignore_pattern: ~r{\.?#(.*)},
  tasks: [:elixir, Mix.Tasks.Compile.Elm]

Another example of a custom mix task could be to generate API documentation for a project based on a set of RAML files.

About

Rerun custom mix tasks on code modification

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages