Имеется следующий код в gulpfile.js:
//Function for error log
function log(error) {
console.log([
'',
"===== ERROR MESSAGE START =====".bold.red,
('[' + error.name + ' in ' + error.plugin + ']').bold.green,
error.message,
"===== ERROR MESSAGE END =======".bold.red,
''
].join('\n'));
this.end();
}
...
gulp.task('watch', function() {
// .. Layouts
gulp.src([path.layouts.all, path.layouts.views.none])
.pipe(plugin.watch([path.layouts.all, path.layouts.views.none]))
.pipe(plugin.rubyHaml()).on('error', log) //error log here
.pipe(gulp.dest(path.build));
});
...
Этот код работает, т.е. при возникновении ошибки в каком-либо .haml файле, то gulp-watch не падает, а выводит в консоль сообщение об ошибке и продолжает слушать изменения в файлах. Но делает он это лишь в первый раз, если сделать ошибку в другом файле или пересохранить этот файл не исправляя ничего, то консоль радостно моргнет надписью "blabla.haml was changed" и, естественно, не скомпилит этот файл.