2014-03-12 60 views
11

我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")); 
}); 
+0

如果文件不存在,则该流根本就没有处理。我不确定你期望在这里发生什么。 – OverZealous

+0

假设你想要一种方法来检测路径是否存在,你会不会?如果不是在“错误”事件,那么一些其他事件。 – greim

+0

您可以在任务上放置一个标志,例如anyData = false;然后在链中设置为true,然后查看.on('end',function(){})是否已设置。如果不是,则提出错误。这有点不好意思,你可能只是想用fs来检查文件是否存在:) –

回答

29

好的,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

+0

注意它不会阻止吞咽,所以看看控制台! – Sebastien

4

如果路径不存在,gulp.src成功地推动通过管道正好没有时,上海社会科学院和dest任务成功永远不会被调用,并与,gulp.src的流结束,标志着默认任务完整的,和吞咽出口。它已经完成了你告诉它的内容。 :D

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 
}