眠いんでメモ程度に。そのうちちゃんと書き直すかも。
Big Sky :: 開発速度を加速するツール、goemon を書いた。
こいつは学習コスト低くて良さげだぜってことで、普段簡単なアプリを作る時に愛用してるMojolicious::Liteで使ってみた。
今回はMojolicious使ったけど、同じノリで他のFWでも他言語でも使える感じが良い。
ファイルの配置
いつも通りの作業ディレクトリ下で$ goemon -g > goemon.yml
を実行してとりあえず設定ファイルを作成しておく。
作業ディレクトリ以下
├── goemon.yml
├── myapp.pl
└── public
├── test.css
├── test.html
└── test.js
goemon.ymlの記述
- 各所を静的ファイルの置き場所を
./assets/
からMojoliciousで使う./public
に変える。 -
*js
についてはどうもデフォルトで生成されるminifyコマンドだと*.min.js
までminifyしようとして無限にファイルが増殖しちゃうので、苦肉の策でifを使う感じに。(githubじゃ未完成っつってるけど:jsmin
でも一応動きそう。) -
myapp.pl
更新時に再起動&ライブリロードしてくれるように記述。
goemon.yml
livereload: :35730
tasks:
- match: './public/*.js'
commands:
- 'if ! expr ${GOEMON_TARGET_FILE} : ".*\.min\.js" > /dev/null; then minifyjs -m -i ${GOEMON_TARGET_FILE} > ${GOEMON_TARGET_DIR}/${GOEMON_TARGET_NAME}.min.js; fi'
- :livereload /
- match: './public/*.css'
commands:
- :livereload /
- match: './public/*.html'
commands:
- :livereload /
- match: '*.pl'
commands:
- :restart
- :livereload /
HTMLのヘッダにライブリロード用の記述を加える
静的なhtmlファイルとかmyapp.plで作るhtmlタグとかに追加しておく。
<script src="http://localhost:35730/livereload.js"></script>
起動
要するに$ goemon [いつものコマンド]
で良い。
Mojolicious::Liteの場合は$ ./myapp.pl daemon
でサーバ起動なので・・・
$ goemon ./myapp.pl daemon
GOEMON 2015/02/26 00:50:02 goemon.go:380: starting command [./myapp.pl daemon]
GOEMON 2015/02/26 00:50:02 goemon.go:351: loading /Users/*****/goemontest/goemon.yml
GOEMON 2015/02/26 00:50:02 goemon.go:262: goemon loaded /Users/*****/goemontest/goemon.yml
GOEMON 2015/02/26 00:50:02 goemon.go:368: starting livereload
[Thu Feb 26 00:50:03 2015] [info] Listening at "http://*:3000"
Server available at http://127.0.0.1:3000
各種ファイルを書き換えてみる
CSSファイル
例えばCSS何かを書き換えて保存すると、ライブリロードが走りブラウザ側も勝手に再読み込みしてくれる。便利!
GOEMON 2015/02/26 00:53:04 goemon.go:153: "/Users/*****/goemontest/public/test.css": CHMOD
GOEMON 2015/02/26 00:53:04 goemon.go:162: reloading /
JSファイル
jsだったら保存時にminifyもしてくれる。便利!!
GOEMON 2015/02/26 00:59:55 goemon.go:153: "/Users/*****/goemontest/public/test.min.js": CHMOD
GOEMON 2015/02/26 00:59:55 goemon.go:200: executing if ! expr /Users/*****/goemontest/public/test.min.js : ".*\.min\.js" > /dev/null; then minifyjs -m -i /Users/*****/goemontest/public/test.min.js > /Users/*****/goemontest/public/test.min.min.js; fi
GOEMON 2015/02/26 00:59:55 goemon.go:162: reloading /
$ ls public/
test.css test.html test.js test.min.js
plファイル
myapp.plだったら保存時にプロセス再起動してくれる。便利!!!
GOEMON 2015/02/26 00:57:03 goemon.go:153: "/Users/*****/goemontest/myapp.pl": RENAME
GOEMON 2015/02/26 00:57:03 goemon.go:387: restarting command
GOEMON 2015/02/26 00:57:03 goemon.go:111: os: process already finished
[Thu Feb 26 00:57:04 2015] [info] Listening at "http://*:3000"
Server available at http://127.0.0.1:3000
GOEMON 2015/02/26 00:57:08 goemon.go:162: reloading /
学習コスト低くてそれほど戸惑う要素もないし、記述も簡単で応用も効きそうな感じが良い!