Configurable recompiling and rerunning go apps when source changes
Latest commit 623570c Feb 15, 2017 @ivpusic committed on GitHub Create LICENSE


Build Status

Recompiling and rerunning go apps when source changes


  • specify list of files/directories to ignore
  • specify list of file suffixes to watch (.go, .html, etc.)
  • provide application arguments
  • configuration using cli-flags and/or json file
  • Cross-platform support (Linux, OSX, Windows)

How to install?

go get


usage: rerun [<flags>]

  --help               Show context-sensitive help (also try --help-long and --help-man).
  -v, --verbose        Verbose mode. It will show rerun internal messages. Default: false
  -i, --ignore=IGNORE  List of ignored files and directories.
  -a, --args=ARGS      Application arguments.
  -s, --suffixes=SUFFIXES  
                       File suffixes to watch.
  -c, --config=CONFIG  JSON configuration location
  --attrib             Also listen to changes to file attributes.
  --version            Show application version.

To run with default settings just type



CLI flags

rerun -a arg1,arg2 -i bower_components,node_modules,test

You have troubles? Use verbose mode (-v flag)! You will see a lot of usefull information about rerun internals.

rerun -v

JSON config

Create json file with content, with name for example conf.json

    "ignore": ["some/path/to/ignore1", "some/path/to/ignore2"],
    "args": ["dev", "test"],
    "suffixes": [".go", ".html", ".tpl"],
    "attrib": true

and then

rerun -c conf.json

Rerun supports default config loading: if a file with name .rerun.json exists in your project directory (from whence you execute rerun) - it will be automatically loaded without a need to specify -c flag.


If the same option is provided by cli flag and json config, one from cli will survive.

Example of json config:

    "ignore": ["some/path/to/ignore"]

and then

rerun -a arg1,arg2 -c conf.json

ENV variables

You can use environment variables inside your configurations.

    "ignore": ["$GOPATH/hello/how/are/you"]
    "ignore": ["%GOPATH%/hello/how/are/you"]

Wildcard paths

    "ignore": ["/some/path", "/some/other/**/*.go"]

Use with Vagrant

If you are using Vagrant as your development environment, the edited changes do not fire the notify events on the guest side - meaning that rerun cannot detect the changes. However, if you install the vagrant-notify-forwarder plugin from, you can make rerun work together with it:

vagrant plugin install vagrant-notify-forwarder

Then, watch the files with

rerun --attrib -c conf.json