gulp-plumberとgulp-notifyでデスクトップ通知を出す

gulp-plumber & gulp-notify

gulpでwatch中にエラーが出たとき、ターミナルでエラーメッセージが出ててもなかなか気づけないので通知を出すようにした。

gulpfileの記述とか詳細はQiitaに投稿したのでこちらを参照。

notify

通知出すやつ

今回gulp-notifynode-notifierの2つを使ってみた。gulp-notifygulp-plumberと組み合わせるにはベストな感じで何も考えず設定できる。

node-notifierterminal-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のコンパイルを実行してて、そこで.onerrorイベントが起こったときのハンドラを指定してる。こんな感じでイベントが起こったときの振る舞いを指定する。

「このイベント欲しいのにな〜」と思ったらプラグインのソースのぞいて.emit('hoge', hoge)みたいなの足すのも手です。(環境変わると同じコード足さないと使えなくなるけど)

環境、どんどん自分に最適化していきましょう。