Skip to content
/ reload Public
forked from Teamwork/reload

Lightweight automatic reloading of Go processes.

License

Notifications You must be signed in to change notification settings

msokk/reload

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GoDoc Build Status codecov

Lightweight automatic reloading of Go processes.

After initialisation with reload.Do() any changes to the binary (and only the binary) will restart the process. For example:

func main() {
    go func() {
        err := reload.Do(log.Printf)
        if err != nil {
            // Only returns initialisation/startup errors.
            panic(err)
        }
    }()

    // Replace with actual code...
    time.Sleep(666 * time.Second)
}

Now use go install or go build to restart the process.

This is an alternative to the "restart binary after any *.go file changed"-strategy that some other projects – such as gin or go-watcher – take. The advantage of reload's approach is that you have a more control over when the process restarts, and it only watches a single directory for changes which has some performance benefits, especially when used over NFS or Docker with a large number of files.

It also means you won't start a whole bunch of builds if you update 20 files in a quick succession. On a desktop this probably isn't a huge deal, but on a laptop it'll save some battery power.

Caveat: the old process will continue running happily if go install has a compile error, so if you missed any compile errors due to switching the window too soon you may get confused.

About

Lightweight automatic reloading of Go processes.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 71.9%
  • Go 28.1%