2017-04-01 86 views

Odpowiedz

6

Po kilku badaniach nie znalazłem dobrego rozwiązania dla tego problemu, więc zdecydowałem się udostępnić Ci to rozwiązanie.

Ten problem został rozwiązany w 2 kroki

1: Musisz przekonwertować co kiedykolwiek chcesz rury w haustem do pliku winylu. Można to zrobić jak tak

const Vinyl = require('vinyl'); 
var vinyl = new Vinyl(); 
vinyl.cwd = '/'; 
vinyl.base = '/'; 
vinyl.path = '/yourfictivefilepath'; 
vinyl.contents = new Buffer(JSON.stringify(yourobject)); 

Aby uzyskać więcej informacji na temat tego kroku: https://github.com/gulpjs/vinyl

2: Tworzenie strumienia z plików winylowych

Okazało się, że te kroki mogą być powtarzalne i możliwe sprawiają, że kod jest mniej czytelny, więc postanowiłem zamknąć te kroki w pakiecie npm, który robi to za Ciebie.

https://www.npmjs.com/package/gulp-to-stream

1

Od łyk używa plików winylowa na wejściu i faktycznie uses niektóre z jego właściwości (takie jak .base), jest to nieuniknione, aby tworzyć pliki winylowe wykorzystać haustem. Więc polecam tego dostępu, aby osiągnąć swój cel:

'use strict'; 
const gulp = require('gulp'); 
const header = require('gulp-header');//https://www.npmjs.com/package/gulp-header 

gulp.task('default', function() { 
    gulp.src("a.json")//empty file 
     .pipe(header(JSON.stringify({a:1,b:2})))//inject your own content 
     .pipe(gulp.dest("dist/")) 
}); 

Utwórz pusty plik a.json i używać go jako źródła. Następnie wstrzyknij własną treść za pomocą gulp-header i zrób z nią, co chcesz.

Jeśli chcesz uniknąć dodatkowych plików (a.json), spróbuj tego:

'use strict'; 
const gulp = require('gulp'); 
const transform = require('gulp-transform'); 
const rename = require("gulp-rename"); 

gulp.task('default', function() { 
    return gulp.src("./gulpfile.js") 
     .pipe(transform(() => JSON.stringify({a:1,b:2}))) 
     .pipe(rename("a.json")) 
     .pipe(gulp.dest("dist/")) 
});