直接流式传输到gulp.dest

时间:2015-06-12 11:07:52

标签: javascript node.js gulp

我想创建npm模块,它返回流,然后在其他应用程序中将其传递给gulp.dest

示例:

// 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('./'));
});

不幸的是,我得到了这个代码:

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

它以这种方式运作

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

1 个答案:

答案 0 :(得分:1)

您可以使用vinyl-source-stream将您的信息流转换为兼容gulp的信息流。

获取它:

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

用法:

// 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('./'));
});

source()的参数将是gulp.dest()使用的文件名。