gulpでwatch中にエラーが出たとき、ターミナルでエラーメッセージが出ててもなかなか気づけないので通知を出すようにした。
gulpfileの記述とか詳細はQiitaに投稿したのでこちらを参照。
通知出すやつ
今回gulp-notifyとnode-notifierの2つを使ってみた。gulp-notifyはgulp-plumberと組み合わせるにはベストな感じで何も考えず設定できる。
node-notifierはterminal-notifierを使ってて細かい指定ができる。めんどくさくないならnode-notifierでタスク毎に通知をカスタマイズするとヨサソウ。
イベント監視する
Qiitaの方には書かなかったけど、gulpのプラグインはだいたいエラーが起きたときにはthis.emit('error', error)みたいな感じでerrorイベントを発行してくれてる。どんなイベントを発行してるかはnode_modulesの中にあるプラグインのソースを直接読むのが早い。
イベントのハンドリングは下記みたいな感じでハンドリングできる。(errorイベントに限らず)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | var gulp = require('gulp'); var plumber = require('gulp-plumber'); var coffee = require('gulp-coffee'); var Notifier = require('node-notifier'); var notifier = new Notifier(); gulp.task('coffee', function() { return gulp.src('src/coffee/**/*.coffee') .pipe(plumber() .pipe(coffee().on('error', function(err) { notifier.notify({ message: error.message, title: 'coffee compile error', sound: 'Glass' }); })) .pipe(gulp.dest('app/assets/js'); }); |
10行目にcoffeeのコンパイルを実行してて、そこで.onでerrorイベントが起こったときのハンドラを指定してる。こんな感じでイベントが起こったときの振る舞いを指定する。
「このイベント欲しいのにな〜」と思ったらプラグインのソースのぞいて.emit('hoge', hoge)みたいなの足すのも手です。(環境変わると同じコード足さないと使えなくなるけど)
環境、どんどん自分に最適化していきましょう。