goemon
April 3, 2020 ยท View on GitHub

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 /
matchis wildcard. You can use./foo/bar/**/*.jslike a shell.commandsis list of commands to run.:XXXis 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)