I am using browserify so I can use npm modules in my front end code, and gulp to do my build tasks. This works fine:
var browserify = require('gulp-browserify');
gulp.task('js', ['clean'], function() {
gulp
.src('./public/js/src/index.js')
.pipe(browserify({
insertGlobals : true,
debug : ! gulp.env.production
}))
.pipe(gulp.dest('./public/js/dist'))
});
However if there's a syntax error in my JS, I'd like to be notified of the error via an OS X notification. I've seen this similar question and modified my code to add an .on('error'...)
after the .browserify()
:
// Browserify/bundle the JS.
gulp
.src('./public/js/src/index.js')
.pipe(browserify({
insertGlobals : true,
debug : ! gulp.env.production
}).on('error', function(err){
notify.onError({
message: "Error: <%= error.message %>",
title: "Failed running browserify"
}
this.emit('end');
})
.pipe(gulp.dest('./public/js/dist'))
However this doesn't notify when my JS is broken. Adding a console.log() inside on('error',...)
doesn't log either. I suspect because that question doesn't involve using gulp piping.
How can I get notified of errors during when piping to gulp browserify?
Use gulp-notify. Note also you should use the browserify module instead of the deprecated gulp-browerify module.
var browserify = require('browserify'),
brfs = require('brfs'),
watchify = require('watchify'),
notify = require("gulp-notify");
var bundler = watchify(browserify({
basedir: "./public/js/src"
}));
// Browserify our code
gulp.task('js', ['clean'], function() {
// Browserify/bundle the JS.
return bundler.bundle()
// log errors if they happen
.on('error', function(err) {
return notify().write(err);
})
.pipe(source('index.js'))
.pipe(gulp.dest('public/js/dist'));
});
Here example how to use browserify
util in gulp
task.
Here another example how to use browserify
and show notification, when js has syntax errors.
In my gulpfile, I just listen for uncaught exceptions and notify using node-notifier:
var Notifier = require('node-notifier');
notifier = new Notifier();
process.on('uncaughtException', function(err) {
notifier.notify({title: 'error', message: 'gulp process has crashed'});
setTimeout(function() {
console.error(err);
process.exit(1);
}, 1000);
});
I found that a setTimeout
delay was necessary for the notification to show up before exiting the process.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With