2016-10-26 2 views
1

Ich habe eine Struktur von home.json, contact.json, case.json usw. in jedem Verzeichnis und ich fusioniere das in eins, wie home-combined.json.Get filename von * .json in Variable in Schluck Aufgabe

Ich brauche die Dateinamen von *.json erhalte die Dateinamen *-combined.json zu setzen, ich bin mit dieser pagename Variable den Namen der Datei zu erhalten, aber das Ergebnis ist *-combined.json statt home-combined.json

gulp.task('json-merge',['json'], function(){ 

    return gulp.src(directories.src + '/json-combined/**/*.json') 
    var file = directories.src + '/json-combined/**/*.json' 
    var pageName = path.basename(file, path.extname(file)) 

    .pipe(jsonMerge({ 
     fileName: pageName + '-combined.json', 
     edit: function(parsedJson, file) { 
     var component = path.basename(path.dirname(file.path)); 
     var editedJson = {}; 
     editedJson[camelCase(component)] = parsedJson; 
     return editedJson; 
     } 
    })) 

    .pipe(gulp.dest(paths.json.dest)) 
}); 
+0

Ihr 'var's in den Strom eingefügt ist ... das kann unmöglich Arbeit. –

Antwort

0

statt was Sie tun, ich folgendes tun würde, wenn Sie versuchen, dies zu tun:

home.json

{ 
    one: 1 
} 

other.json

{ 
    two: 2 
} 

und Sie bekommen: haus combined.json

{ 
    one: 1, 
    two: 2 
} 

verwenden schluck Modul https://www.npmjs.com/package/gulp-merge-json

Ein Beispiel in Ihrem Fall wäre:

var jsonmerge = require('gulp-merge-json'); 
var paths = require('./pathsFile.json'); 

/* 
    Basic functionality 
*/ 
gulp.task('json-merge', function(){ 
    return gulp.src('jsonFiles/**/*.json') 
      .pipe(jsonmerge('home-combined.json')) 
      .pipe(gulp.dest(paths.json.dest)); 
}); 

Der einzige Unterschied In diesem Fall müssten Sie den Namen der zu analysierenden Datei nicht angeben.

Nicht sicher, ob dies Ihre Frage beantwortet, aber wenn Sie angeben, was Sie brauchen, kann ich meine Antwort bearbeiten.

--edit Um Dateien aus verschiedenen Verzeichnissen mit schluck erhalten Sie können festlegen, wo der Strom von zum Beispiel kommt:

return gulp.src([dir1 + 'jsonFiles/**/*.json', 
        dir2 + 'jsonFiles/**/*.json', 
        dir3 + 'jsonFiles/**/*.json']) 
+0

Ich habe mehrere home.json und andere.json verteilt über jsonFiles/** /, zum Beispiel jsonFile/Komponente-1/home.json, jsonFile/Komponente-1/andere.json jsonFile/Komponente-2/home.json , jsonFile/component-1/andere.json jsonFile/component-3/home.json, jsonFile/component-3/andere.json usw. und möchte diese in home-combined.json/other-combined zusammenführen. json, also brauche ich den Namen der JSON-Datei, um den Dateinamen in meiner Bearbeitungsfunktion zu erstellen. – lottebijl

+0

Ok Ich verstehe, was Sie jetzt meinen, obwohl ich empfehlen würde, Dateien aus dem Blob-Stream herauszusuchen, da Sie am Ende des Tages einen Blob analysieren, der mehrere Dateien enthält, die in keiner bestimmten Reihenfolge kommen. Es ist möglich, auszuwählen und auszuwählen, was Sie wollen, aber es könnte ein größerer Aufwand sein als das, was es wert ist. Nachdem Sie das gesagt haben, wissen Sie das Verzeichnis und welche Dateien Sie wollen. Ich würde vorschlagen, verschiedene Schluckaufgaben für jede kombinierte json-Datei zu erstellen. Und alle Anrufe zu einem Schluck-Array, das Sie in Watch und Ihre Standardaufgaben oder Schluck CLI aufrufen können kombiniert werden. – CriCri

Verwandte Themen