Потоки gulp'a это не потоки node.js - в них передаётся путь файла и опционально его содержимое.
Проще всего не заморачиваться и делать через fs
var gulp = require('gulp'),
g = require('gulp-load-plugins')(),
fs = require('fs');
gulp.task('writeStuff', function(done) {
var stuff = {};
fs.writeFile('file.json', stuff, function(err) {
if (err) throw err;
g.util.log('It\'s saved!');
done();
});
});
Вот пример как создать файл и запихнуть его в поток:
var gutil = require('gulp-util'),
through = require('through2');
function makeFileStream(name, source, options) {
var file = new gutil.File({
cwd: optaions.cwd | "",
base: options.base | "",
path: name,
contents: ((source instanceof Buffer) ? source : new Buffer(source))
});
var stream = through.obj(function(file, enc, done) {
this.push(file);
return done();
});
stream.write(file);
if (options && options.src) {
stream.end();
}
return stream;
};