makbol
makbol

Reputation: 310

Streaming directly to gulp.dest

I’d like to make npm module which returns stream and then pipe it to gulp.dest in some other app.

Example:

// some-module.js
module.exports = function() {
  return require('fs').createReadStream('someFile.txt');
}

// gulpfile.js
gulp.task('default', function() {
  var myModule = require('./some-module');
  myModule().pipe(gulp.dest('./'));
});

Unfortunately for this code I got:

path.js:313
        throw new TypeError('Arguments to path.resolve must be strings');
              ^
TypeError: Arguments to path.resolve must be strings

It works in this way

// gulpfile.js
gulp.task('default', function() {
  var myModule = require('./some-module');
  var fs       = require('fs');
  myModule().pipe(fs.createWriteStream('someOtherFile.txt');
});

Upvotes: 2

Views: 214

Answers (1)

psalaets
psalaets

Reputation: 717

You can use vinyl-source-stream to convert your stream into a gulp-compatible stream.

Get it:

npm install vinyl-source-stream --save-dev

Usage:

// gulpfile.js
var source = require('vinyl-source-stream');

gulp.task('default', function() {
  var myModule = require('./some-module');
  myModule()
    .pipe(source('someOtherFile.txt'))
    .pipe(gulp.dest('./'));
});

The parameter to source() will be the filename used by gulp.dest().

Upvotes: 1

Related Questions