Возможно ли преобразовать поток в буфер синхронно?

Посмотрите на простейшую задачу Gulp, которая использует gulp-tap:

var gulp = require('gulp');
var tap = require('gulp-tap');    

gulp.task('mytask', function () {
    return gulp.src("src/*/*.js")
        .pipe(tap(function (file) {
            file.contents = new Buffer('blabla');        
        }))
    .pipe(gulp.dest('./dist'));
});

Он берет файлы из src каталог, заменяет содержимое на "blabla" и сохраняет эти "испорченные" файлы в каталог "dist". Это просто!

Но что, если у нас есть стрим вместо "блабла"? Например:

var gulp = require('gulp');
var tap = require('gulp-tap');
var jsdocParse= require("jsdoc-parse");  

gulp.task('jsdoc', function () {
  return gulp.src("src/*/*.js")
    .pipe(tap(function (file) {
      var stream = jsdocParse(file.path);
      file.contents = ???;
    }))
    .pipe(gulp.dest('./dist'));
});

1 ответ

Решение

Попробуй это:

gulp.task('mytask', function () {
    return gulp.src("src/*.js")
        .pipe(tap(function (file, t) {
          file.contents = Buffer.concat([
                jsdocParse(file.path)
            ]);
        }))
    .pipe(gulp.dest('./dist'));
});
Другие вопросы по тегам