让Gulp-concat只合并相关数据



concat的基本用例是直接的:

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

然而,data.json包含一些与manifest.json无关的数据,所以我想添加一个额外的步骤,只从每个data.json中提取我需要的相关json片段,并将该json添加到清单中。

我希望我能做一些类似的事情:

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

其中myCustomFunction()data.json,仅返回相关数据。我不清楚的是如何通过data.json对象|路径到达myCustomFunction()

这正是gulp-json-editor的初衷(使用示例甚至在manifest.json文件中演示了它)。

您所要做的就是将自定义函数传递给jeditor()。为每个data.json文件调用您的自定义函数,您可以返回一个修改后的JSON对象,该对象只包含相关数据:

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'));
});

(顺便说一句:我很确定你不能只连接一堆JSON对象,然后从中得到一个有效的JSON对象。)

相关内容

  • 没有找到相关文章

最新更新