2017-01-13 1 views
0

Le cas d'utilisation de base pour concat est-simple:Have Gulp-concat fusionner uniquement les données pertinentes

gulp.task('generate-manifest', function() { 
    return gulp.src('./*/data.json') 
    .pipe(concat('manifest.json')) 
    .pipe(gulp.dest(./path/to/dest)); 
}); 

Cependant data.json contient certaines données non pertinentes pour la manifest.json, donc je veux ajouter une étape supplémentaire pour tirer seulement les morceaux pertinents de json dont j'ai besoin de data.json, et ajouter ce json au manifeste.

J'espérais que je pouvais quelque chose comme:

gulp.task('generate-manifest', function() { 
    return gulp.src('./*/data.json') 
    .pipe(myCustomFunction()) 
    .pipe(concat('manifest.json')) 
    .pipe(gulp.dest(./path/to/dest)); 
}); 

myCustomFunction() prend data.json et renvoie uniquement les données pertinentes. Ce que je ne comprends pas, c'est comment passer le chemin d'accès data.json à myCustomFunction().

Répondre

1

C'est à peu près ce qui a été fait pour gulp-json-editor (le usage example le montre même sur un fichier manifest.json).

Tout ce que vous avez à faire est de passer votre fonction personnalisée à jeditor(). Votre fonction personnalisée est appelée pour chaque fichier data.json et vous pouvez retourner un objet JSON modifié qui ne contient que les données pertinentes:

var jeditor = require("gulp-json-editor"); 

gulp.task('generate-manifest', function() { 
    return gulp.src('./*/data.json') 
    .pipe(jeditor(function(json) { 
     delete json.unwantedData; 
     return json; 
    })) 
    .pipe(concat('manifest.json')) 
    .pipe(gulp.dest('./path/to/dest')); 
}); 

(BTW: Je suis sûr que vous ne pouvez pas concat un tas d'objets JSON et obtenir un objet JSON valide à partir de cela.)

+0

C'est exactement ce dont j'ai besoin. Merci! – JerkyTreats