Skip to content

Instantly share code, notes, and snippets.

@leocaseiro
Forked from rudijs/gulpfile.js
Last active November 8, 2015 19:52
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leocaseiro/f2138edd4f0f66d87b85 to your computer and use it in GitHub Desktop.
Save leocaseiro/f2138edd4f0f66d87b85 to your computer and use it in GitHub Desktop.
GulpJS Jshint with Notify on Error
var gulp = require('gulp'),
watch = require('gulp-watch'),
// This will keeps pipes working after error event
plumber = require('gulp-plumber'),
// linting
jshint = require('gulp-jshint'),
stylish = require('jshint-stylish'),
// Used in linting custom reporter
map = require('map-stream'),
events = require('events'),
notify = require('gulp-notify'),
emmitter = new events.EventEmitter(),
path = require('path');
// Custom linting reporter used for error notify
var jsHintErrorReporter = function (file, cb) {
return map(function (file, cb) {
if (!file.jshint.success) {
file.jshint.results.forEach(function (err) {
if (err) {
//console.log(err);
// Error message
var msg = [
path.basename(file.path),
'Line: ' + err.error.line,
'Reason: ' + err.error.reason
];
// Emit this error event
emmitter.emit('error', new Error(msg.join('\n')));
}
});
}
cb(null, file);
}
});
gulp.task('lint', function () {
gulp.src([
'app/components/**/*.js',
'!app/components/app/translations.js'
])
.pipe(watch())
.pipe(plumber())
.pipe(jshint('.jshintrc', {fail: true}))
.pipe(jshint.reporter(stylish)) // Console output
.pipe(jsHintErrorReporter()) // If error pop up a notify alert
.on('error', notify.onError(function (error) {
return error.message;
}));
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment