首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gulp:合并文件

Gulp:合并文件
EN

Stack Overflow用户
提问于 2017-07-06 07:53:09
回答 1查看 614关注 0票数 1

我的项目结构如下:

代码语言:javascript
复制
my_app
├── gulpfile.js
├── package.json
└── source
    └── locales
        ├ en
        │ ├─ core.json
        │ └─ ui.json
        ├ es
        │ ├─ core.json
        │ └─ ui.json
        ├ fr
        │ ├─ core.json
        │ └─ ui.json
        ├ ...

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

代码语言:javascript
复制
my_app
    ├── gulpfile.js
    ├── package.json
    └── source
        └── locales
            ├ en
            │ └─ strings.json
            ├ es
            │ └─ strings.json
            ├ fr
            │ └─ strings.json
            ├ ...

下面是我当前的gulp任务,它不是这样做的,而是合并所有文件:

代码语言:javascript
复制
var merge = require('gulp-merge-json');
...
gulp.src([
        'source/locales/**/*.json',
        'source/locales/**/*.json'
      ])
      .pipe(merge({fileName: 'strings.json'}))
      .pipe(gulp.dest('source/locales/'));

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

代码语言:javascript
复制
my_app
    ├── gulpfile.js
    ├── package.json
    └── source
        └── locales
            └ strings.json

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-06 09:39:38

您可以尝试将每个区域设置文件夹处理为自己的gulp任务:

代码语言:javascript
复制
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);
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44942890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档