Gulp бесшумная ошибка - ошибки не печатаются на консоли
Мой gulp файл не испускает никаких ошибок ни в стандартных методах gulp, как gulp.src() с несуществующими путями, ни при возникновении ошибок потока, вызываемых их обработчиком. Я включил простой файл, который молча завершает работу, печатает только начальные и завершенные сообщения по умолчанию.
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" ) );
});
Ответы
Ответ 1
Хорошо, поэтому 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]()
Ответ 2
Если путь не существует, gulp.src успешно ничего не пропускает через канал, задачи sass и dest никогда не вызываются, и с этим заканчивается поток gulp.src, сигнализирующий о задании по умолчанию завершено и gulp завершено. Он сделал именно то, что вы сказали ему.: D
Ответ 3
Я согласен с использованием @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
}