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)
go get github.com/ivpusic/rerun
usage: rerun [<flags>]
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
-t, --test Run tests
--attrib Also listen to changes to file attributes.
--version Show application version.
To run with default settings just type
rerun
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
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
You can use environment variables inside your configurations.
{
"ignore": ["$GOPATH/hello/how/are/you"]
}
{
"ignore": ["%GOPATH%/hello/how/are/you"]
}
{
"ignore": ["/some/path", "/some/other/**/*.go"]
}
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 https://github.com/mhallin/vagrant-notify-forwarder, you can make rerun work together with it:
vagrant plugin install vagrant-notify-forwarder
Then, watch the files with
rerun --attrib -c conf.json
MIT