Quantcast
Channel: User hurrymaplelad - Stack Overflow
Viewing all articles
Browse latest Browse all 41

Why do some Gulp streams "flow" by default, while others do not?

$
0
0

Consider these two gulp tasks:

gulp.task('src', function(done) {  gulp.src('docs/*')    .on('end', function() {      console.log('ending');      done();    });});gulp.task('dest', function(done) {  gulp.src('docs/*')    .pipe(gulp.dest('temp'))    .on('end', function() {      console.log('ending');      done();    });});

Running gulp dest behaves as expected, outputting:

[12:33:15] Using gulpfile ~/Projects/gulp-exit/gulpfile.js[12:33:15] Starting 'dest'...ending[12:33:15] Finished 'dest' after 13 ms

However, running gulp src only outputs:

[12:31:11] Using gulpfile gulpfile.js[12:31:11] Starting 'src'...

The 'end' callback is never called. After a bit of debugging, I think the stream in the dest task is flowing while the stream in the source task is not.

Signaling the src task to flow explicitly by calling stream.resume():

gulp.task('src', function(done) {  gulp.src('docs/*')    .on('end', function() {      console.log('ending');      done();    })    .resume();});

Gives the expected output:

[12:46:52] Using gulpfile gulpfile.js[12:46:52] Starting 'src'...ending[12:46:52] Finished 'src' after 11 ms

I've seen this same mix of behaviors with plugins: gulp.dest and gulp-mocha seem to return flowing streams while gulp-logger and gulp-gh-pages do not.

Why the difference in behavior?


Viewing all articles
Browse latest Browse all 41

Trending Articles