Задать вопрос
@faragly

Как превратить js объект в поток Gulp для дальнейшей записи в json файл?

Здравствуйте! Есть js объект, его нужно записать в файл json, как это реализовать? Я так понимаю это делается с помощью Vinyl
var json = {...};
file = new Vinyl({
                base: '/',
                path: 'file.json',
                contents: new Buffer(json)
            });

А дальше как его завернуть чтобы провернуть .pipe(gulp.dest('file.json')); ?
  • Вопрос задан
  • 308 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
voidnugget
@voidnugget
Программист-прагматик
Потоки 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;
};
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы