我有以下项目结构:
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
├ ...
这是我当前的gulp任务,而不是这样做,合并所有文件:
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
有什么建议吗?
答案 0 :(得分:2)
您可以尝试将每个语言环境文件夹处理为自己的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);
});