Wiem, że ten łyk wymaga prawidłowego działania strumienia źródła winylowego, ale czy istnieje prosty sposób użycia już istniejącego pliku winylowego lub obiektu json zamiast dobrze znanego gulp.src to tylko bierze globs?Jak używać listy obiektów jako strumienia źródłowego gulp
Odpowiedz
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.
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/"))
});