Gulp:合并文件

我有以下项目结构:

my_app ├── gulpfile.js ├── package.json └── source   └── locales ├ en │ ├─ core.json │ └─ ui.json ├ es │ ├─ core.json │ └─ ui.json ├ fr │ ├─ core.json │ └─ ui.json ├ ... 

目标:我想合并每个语言目录中的文件到一个,即:

 my_app ├── gulpfile.js ├── package.json └── source  └── locales ├ en │ └─ strings.json ├ es │ └─ strings.json ├ fr │ └─ strings.json ├ ... 

这是我目前的一个重要任务,而不是这样做,合并所有文件:

 var merge = require('gulp-merge-json'); ... gulp.src([ 'source/locales/**/*.json', 'source/locales/**/*.json' ]) .pipe(merge({fileName: 'strings.json'})) .pipe(gulp.dest('source/locales/')); 

但是,这使得目录结构如下所示:

 my_app ├── gulpfile.js ├── package.json └── source  └── locales └ strings.json 

有什么build议么?

您可以尝试通过处理每个区域文件夹到自己的gulp任务:

 var fs = require('fs'), path = require('path'), gulp = require('gulp'), merge = require('gulp-merge-json'), comb = require('merge-stream'); function getLocales(dir) { return fs.readdirSync(dir).filter(function(file) { return fs.statSync(path.join(dir, file)).isDirectory(); }); } gulp.task('default', function() { var locales = getLocales('source/locales'); var tasks = locales.map(function(locale) { return gulp.src('source/locales/' + locale + '/*.json') .pipe(merge({fileName: 'strings.json'})) .pipe(gulp.dest('source/locales/' + locale)); }); return comb(tasks); });