gulp默默地失败 - 没有错误打印到控制台

时间:2014-03-12 06:26:05

标签: gulp

我的gulp文件没有在gulp.src()等标准gulp方法上发出任何错误,这些方法具有不存在的路径,也不会由其处理程序调用流错误。我已经包含了一个静默失败的简单文件,只打印了起始..和完成..默认消息。

var //
  gulp      = require( "gulp" ),
  gulpUtil  = require( "gulp-util" ),
  sass      = require( "gulp-ruby-sass");


 gulp.task( "default", function() {
  gulp.src( "path-that-does-not-exist.scss" )
  .pipe( sass() )
  .on( "error", function( err ) {
    console.log( "this should print" );
  })
  .pipe( gulp.dest( "./client-side/public/compiled" ) );
 });

3 个答案:

答案 0 :(得分:30)

好的,所以Gulp正在“正确地”工作。但我在你的问题中听到的是,如果Gulp可以告诉你文件是否不存在会很好。

我这样使用gulp-expect-file

var coffee = require('gulp-coffee');
var expect = require('gulp-expect-file');

gulp.task('mytask', function() {
  var files = ['idontexist.html'];

  return gulp.src(files)
    .pipe(expect(files))
    .pipe(coffee());
});

现在你会在终端看到这个:

example output

答案 1 :(得分:4)

如果路径不存在,gulp.src会成功地通过管道推送任何内容,从不会成功调用sass和dest任务,并且gulp.src的流结束,发出默认任务的信号是完成,并且gulp退出。它完全按照你所说的去做。 :d

答案 2 :(得分:2)

我同意@adamjgrant使用gulp-expect-file

var expect = require('gulp-expect-file'),
    gulp = require('gulp');

gulp.task('task', function() {
    var files = ['src/js/*.js'];
    gulp
        .src(files)
        .pipe(expect(files));
});

PS:Grunt.js使用nonull:true

处理此问题
lint: {
    src: ['gruntfile.js', 'gulpfile.js'],
    nonull: true
}