Open cyrusdavid opened 10 years ago
Last code snippet is working fine for me, but with small addition:
var gulp = require('gulp');
var lazypipe = require('lazypipe');
var gless = require('gulp-less');
var plumber = require('gulp-plumber');
var less = lazypipe()
.pipe(plumber)
.pipe(gless)
.pipe(gulp.dest, 'tmp');
gulp.task('default', function() {
return gulp.src('css/*.less')
.pipe(less()
.on('error', function (err) {
console.log(err);
}));
});
Lazystream uses stream-combiner
inside, which returns one stream with one error handler for all underlying streams, so you get error object with information, from which stream it comes from:
[gulp] Using gulpfile /Users/floatdrop/gulp-lazypipe/gulpfile.js
[gulp] Starting 'default'...
{ plugin: 'gulp-less',
showStack: false,
name: 'Error',
message: 'Unrecognised input in file /Users/floatdrop/gulp-lazypipe/css/1.less line no. 12',
fileName: '/Users/floatdrop/gulp-lazypipe/css/1.less',
lineNumber: 12 }
Gulp-plumber will not add it own error handler, if there is one already defined.
Even though the reference has come through to this issue, I've also run into this issue with the following https://github.com/floatdrop/gulp-watch/issues/52.
Encountering this as well. Adding .on()
to the lazypipe instance is not an option in my case (exporting lazypipes as a node_module). @floatdrop Would having an option to force plumber attaching it's own error handler (even if there is already one attached) fix this?
If anyone is still having problem with this, I found a work-around reading this article: http://lkrnac.net/blog/2014/10/watch-file-changes-propagate-errors-gulp. It provides this explanation:
Lazypipe isn’t integrated with gulp-plumber, so it is needed also in sub-pipe.
So, to make plumber not crash, include it in all of your pipes. It's not pretty, as there's all of a sudden a lot plumbers everywhere, but it works.
@floatdrop: Are there any dangers of not calling plumber.stop()
?
@gligoran nope, it just restores original .pipe
function, nothing else.
It works well!
But with lazy pipe:
I also tried putting plumber inside the lazy pipe: