当gulp-jshint失败时,无法使gulp-notify弹出错误消息

时间:2015-01-23 17:16:47

标签: javascript node.js gulp jshint gulp-notify

所以,整天都在研究我们新的FE工作流程,主要的想法是通过观察者运行一些任务,我们将拥有我们的IDE和一个窗口,每次更改时浏览器都会刷新(scss,js,html等)。

所以,如果一切顺利,我们什么都看不到:浏览器将重新加载,我们将继续工作。

但是,我们想使用gulp notify来处理错误,所以如果我们出错了,会弹出通知程序,然后你可以检查控制台并查看错误。

失败时我们的sass任务示例:

Example for our sass task when fail

对于我们的样式任务,一切正常,但我无法为JS文件完成此任务。

主要是,我不能按照自己的意愿制作gulp-jshint。

这将是这样的:你保存你的js文件,如果失败,弹出窗口出现,当你看到这个,你去控制台,你看到jshint-stylish的输出。

有人能帮助我吗?

这是我的(非工作)解决方案:

gulp.task( 'js-hint', function() {
    return gulp.src( config.source )
        .pipe( plumber() )
        .pipe( jshint( config.jsHintRules ) )
        .pipe( jshint.reporter( 'jshint-stylish' ) )
        .on('error', notify.onError( { message: 'JS hint fail' } ) );
});

显然,我对概念有疑问,那么有人可以请我指出正确的方向吗?

请注意,我只想一直发出相同的消息" JS提示失败"

然后,控制台(感谢jshint-stylish)将为我们提供更多信息。

此外,这将是观察者。 在JS提示传递之后,将执行更多任务,比如borwserify,所以重要的是如果它停止,等待"直到我完成它然后继续前进。

谢谢!

PS,我正在使用:

gulp 3.8.10 gulp-jshint 1.8.6 gulp-notify 2.0.1

通过OSX 10.9.4

1 个答案:

答案 0 :(得分:5)

gulp中的error事件仅在流中发生错误时触发。

要将错误报告者添加到gulp-jshint,请将其传递给fail记者:

 gulp.task('js-hint', function() {
      return gulp.src(config.source)
        .pipe(plumber())
        .pipe(jshint( config.jsHintRules))
        .pipe(jshint.reporter('jshint-stylish'))
        .pipe(jshint.reporter('fail'))
        .on('error', notify.onError({ message: 'JS hint fail'}));
  });