Skip to content
五右衛門
Go
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
auto
cmd/goemon
data
README.md
command.go
goemon.go
goemon_test.go
livereload.go
proc_posix.go
proc_windows.go

README.md

goemon

Go Extensible Monitoring

Speed up your development. If you updated js files, the page should be reloaded. If you updated go files, the app should be recompiled, and should be restarted. And also, the page should be reloaded

Expected directory structure

+---assets
|   +- index.html
|   +- app.css
|   +- app.js
+- main.go

Usage

For example:

Run web server

$ goemon -g > goemon.yml
$ goemon go run main.go

Writing markdown

$ goemon -g md > goemon.yml
$ goemon --

Writing C code

$ goemon -g c > goemon.yml
$ goemon --

Default configuration

# Generated by goemon -g
livereload: :35730
tasks:
- match: './assets/*.js'
  commands:
  - minifyjs -m -i ${GOEMON_TARGET_FILE} > ${GOEMON_TARGET_DIR}/${GOEMON_TARGET_NAME}.min.js
  - :livereload /
- match: './assets/*.css'
  commands:
  - :livereload /
- match: './assets/*.html'
  commands:
  - :livereload /
- match: '*.go'
  commands:
  - go build
  - :restart
  - :livereload /
  • match is wildcard. You can use ./foo/bar/**/*.js like a shell.
  • commands is list of commands to run. :XXX is internal command.
Internal Command Behavior
:livereload /path reload path
:minify minify js/css(work in progress)
:restart restart app
:sleep 3000 sleep 3000ms
:fizzbuzz 100 do fizzbuzz(1 to 100)
:event :Foo fire event :Foo

:event :Foo fire event defined - match: :Foo.

Currently, :minify is work in progress. So you should run minifyjs command to do it. For example, configuration in above works as below.

Pattern Behavior
./assets/*.css reload page
./assets/*.js minify js/css, reload page
./assets/*.html reload page
./assets/*.go build, restart app, reload page

LiveReload

You can use livereload feature.

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <script src="http://localhost:35730/livereload.js"></script>
  <script src="/app.css"></script>
  <script src="/app.min.js"></script>
  <title>Your App</title>
</head>
<body>
<!-- Your Code -->  
</body>
</html>

Use goemon as library

cat > goemon.go
package main

import (
	_ "github.com/mattn/goemon/auto"
)
^D

Then go build. You don't need to use goemon command.

Installation

$ go get github.com/mattn/goemon/cmd/goemon

If you want to minify js, install minifyjs like below.

$ npm install -g minifyjs

License

MIT

Author

Yasuhiro Matsumoto (a.k.a mattn)

You can’t perform that action at this time.