2014-06-26 7 views
10

Trochę mi przykro i szukam odpowiedniej kombinacji zadań do odczytywania n ilości podobnie sformatowanych plików json, wyciągam konkretną tablicę z każdego , połącz je i zapisz jako nowy plik. Z powodzeniem użyłem gulp-concat do łączenia plików, a edytor gulp-json do zmiany wartości w jednym pliku, ale trudno mi zawijać głowę, jak połączyć ciągi procesów.Używanie gulp do łączenia i edycji wielu plików json w jeden

n liczba plików json sformatowanych następująco:

{ 
    "id": "groupofthings1", 
    "things": [ 
     { ... }, 
     { ... }, 
    ], 
    ... 
} 

Pożądany wyjście pojedynczy plik zawierający wszystkie "rzeczy":

[ 
    { ... }, 
    { ... }, 
    { ... }, 
    { ... }, 
    ... 
] 
+0

zbudować tablicę z każdego wpisu reprezentującego jeden z plików, jak łańcuch, a następnie scalić wynik z czymś w rodzaju '„{”+ json_array.join („”) +«}»' albo, można wystarczy załadować/przeanalizować wszystkie pliki JSON, scalić obiekty, a następnie zapisać wynikowy obiekt jako JSON. – joemaller

+0

@joemaller - Ale jak mam to zrobić z wtyczkami gulp? Jestem przekonany, że mogę zbudować strukturę danych, jeśli uda mi się uzyskać odpowiednie strumienie w odpowiednich miejscach z odpowiednimi wtyczkami. – pleeschultz

Odpowiedz

8

zajęło mi trochę poszukiwań, ale skończyło się znalezieniem jsoncombine

Ładuje wszystkie pliki json i uruchamia je poprzez niestandardową funkcję jako skrót obiektów json. Każdy obiekt Json jest zapisywany pod oryginalną nazwą pliku.

gulp.src("./groups/of/things/**/things.json") 
.pipe(jsoncombine("all-things.json",function(data){ 
    // do any work on data here 
    return new Buffer(JSON.stringify(data)); 
})) 
.pipe(gulp.dest("./dest")); 
+0

Wskazał mi właściwy kierunek, dzięki. – Flinkman

+0

, ale jeśli chcę scalić tylko 2 pliki w katalogu? na przykład mam folder do przechowywania wszystkich plików konfiguracyjnych, jeden z jego plików bazowych, a inne pliki oparte na env, czasami chcę połączyć dev + base, czasami prod + base i tak dalej. Czy jest szansa zrobienia tego z tym pakietem? –

+0

@ShlomiSasson można przekazać w tablicy nazw plików/wzorców. Np. 'Gulp.src (['./ file1.json', './base.json'])' – JaredMcAteer

Powiązane problemy