2015-04-21 10 views
27

Mam zadanie haftu, które musi odczytać plik do zmiennej, a następnie użyć jego zawartości jako danych wejściowych dla innej funkcji, która działa na plikach w potoku. Jak mogę to zrobić?Gulp: Jak mogę odczytać zawartość pliku do zmiennej?

Przykład psuedo-psuedo Kod

gulp.task('doSometing', function() { 
    var fileContent=getFileContent("path/to/file.something"); //How? 

    return gulp.src(dirs.src + '/templates/*.html') 
    .pipe(myFunction(fileContent)) 
    .pipe(gulp.dest('destination/path)); 
}); 
+0

Co chcesz zrobić? Z 'gulp.src()' już czytasz pliki, a następnie przesyłasz je do innych funkcji. Mam wrażenie, że nie rozumiesz, jak działa Gulp, może powinieneś przeczytać nieco więcej dokumentacji. – rednaw

+16

To, co próbuję zrobić, to dokładnie to, o co mnie pytano. Źródła rur zostaną poddane transformacji, na którą ma wpływ plik, który próbuję odczytać. Twoje założenie jest błędne i całkiem szczerze rozczarowujące. Jeśli istnieje pewna część dokumentacji, która Twoim zdaniem jest istotna dla mojego pytania, byłbym wdzięczny, gdyby podał link do niej. W przeciwnym razie Twój komentarz jest nieprzydatny i protekcjonalny. – OpherV

+2

Jesteś dziwnie niejasny o "rodzaju transformacji" :) W zależności od transformacji może być plugin, który robi dokładnie to, co chcesz. Np. Jeśli chcesz zastąpić ciąg znaków w pliku, musisz użyć wtyczki "gulp". Nie wiedząc, z jakimi typami plików pracujesz ('.shing"), lub co 'myfunction()' może istnieć więcej Gulp-owski sposób, aby to zrobić. –

Odpowiedz

27

Thargor wskazał mnie we właściwym kierunku:

gulp.task('doSomething', function() { 
    var fileContent = fs.readFileSync("path/to/file.something", "utf8"); 

    return gulp.src(dirs.src + '/templates/*.html') 
    .pipe(myFunction(fileContent)) 
    .pipe(gulp.dest('destination/path')); 
}); 
+1

Co dokładnie zwraca funkcja myFunction? strumień? – Ayyash

+0

@Ayyash to skomplikowane. W haśle zwracasz czytelny strumień, zwykle z 'through' biblioteką JavaScript. Ten strumień ma jakieś wirtualne pliki 'Winyl', które wypuszcza. Polecam, patrząc na prostą wtyczkę do gulp, aby zobaczyć, jak to działa. Ważne jest, aby kończyć wszystkie utworzone strumienie i wywoływać końcowe wywołania zwrotne w funkcjach obsługi rur, jeśli je stworzysz. –

28

Czy tego szukasz?

fs = require("fs"), 

gulp.task('doSometing', function() { 

    return gulp.src(dirs.src + '/templates/*.html') 
    .pipe(fs.readFile("path/to/file.something", "utf-8", function(err, _data) { 
     //do something with your data 
    })) 
    .pipe(gulp.dest('destination/path')); 
    }); 
+5

w jaki sposób można 'pipe()' do strumienia tylko do odczytu, który 'fs.readFile' zwrócił? ... – meandre

Powiązane problemy