我的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 :(得分: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());
});
现在你会在终端看到这个:
答案 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
}