直接流式传输到 gulp.dest

Streaming directly to gulp.dest

本文关键字:gulp dest 传输      更新时间:2023-09-26

我想制作返回流的 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');
});

您可以使用乙烯基源流将流转换为与 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() 使用的文件名。