直接stream到gulp.dest

我想使npm模块返回stream,然后gulp.dest到一些其他的应用程序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'); }); 

您可以使用vinyl-source-stream将您的stream转换成兼容吞吐量的stream。

得到它:

 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()使用的文件名。