watch
しながら作業してるときにコンパイルエラーなんかが起こってたときに、ターミナルにエラーメッセージが出てるけど気づけないときがあったので通知を導入した。
gulp-notifyを使う
エラーが出たときにgulpを終了させないgulp-plumber
と、通知を出すgulp-notify
を使う。
gulp-plumber
はタスク実行中にerror
イベントが発生したときに実行するerrorHandler
を指定することができる。errorHandler
にnotifyを指定すれば通知を出せる。
gulpfile
CoffeeScriptのコンパイルを例に。
var gulp = require('gulp');
var plumber = require('gulp-plumber');
var notify = require('gulp-notify');
var coffee = require('gulp-coffee');
gulp.task('coffee', function() {
return gulp.src('src/coffee/**/*.coffee')
.pipe(plumber({errorHandler: notify.onError('<%= error.message %>')})
.pipe(coffee())
.pipe(gulp.dest('app/assets/js');
});
plumber()
を挟むときに一緒に{errorHandler: notify.onError('<%= error.message %>')}
を引数にしておく。
エラーが出ると通知
watch
しつつ上記タスクが実行されたときにコンパイルエラーが出ると通知が出る。
簡単便利。
node-notifierを使う
node-notifier
を使う。こっちはerror
じゃないときでも好きなとこで通知を出せる。
gulpfile
var gulp = require('gulp');
var plumber = require('gulp-plumber');
var coffee = require('gulp-coffee');
var Notifier = require('node-notifier');
var notifier = new Notifier();
var errorHandler = function(error) {
notifier.notify({
message: error.message,
title: error.plugin,
sound: 'Glass'
});
};
gulp.task('coffee', function() {
return gulp.src('src/coffee/**/*.coffee')
.pipe(plumber({errorHandler: errorHandler)})
.pipe(coffee())
.pipe(gulp.dest('app/assets/js');
});
タスク実行してエラーが出ると チーン♪ という音とともに通知が出る。sound
に指定出来る音は
ls /System/Library/Sounds
で出てくるファイル名が指定できる。指定できるオプションは他にも色々あってnode-notifierのページで確認できる。
notifier.notify({
"title": "Phil Coulson",
"subtitle": "Agent of S.H.I.E.L.D.",
"message": "If I come out, will you shoot me? 'Cause then I won't come out.",
"sound": "Funk", // case sensitive
"contentImage": __dirname + "/coulson.jpg",
"appIcon": __dirname + "/coulson.jpg",
"open": "file://" + __dirname + "/coulson.jpg"
});
node-notifier
の場合はエラーハンドリングに限らず、タスクが終わったときに通知出したり色々とカスタマイズできる。