Grunt连接多个JSON文件

时间:2016-10-06 10:03:47

标签: javascript json gruntjs grunt-contrib-concat

我有多个JSON文件,每个文件位于不同的路径中。 现在我试图用" grunt-concat-json" 连接所有文件。

源JSON文件如下所示:

ExampleA.json

[ {
     "configPath": "Example A"
} ]

ExampleB.json

[ {
   "configPath": "Example B"
} ]

如何配置我的GRUNT任务以获取以下结果JSON文件:

[
   {
       "configPath": "Example A"
   },
   {
       "configPath": "Example B"
   } ]

我已尝试使用此配置:

concat: {
 json:
     {
        src: [
                'pathA/ExampleA.json',
                'pathB/ExampleB.json
            ],
        dest: 'pathX/Merged.json',
            options: {
                separator: ','
            }
        }
    },

通过此设置,我得到以下结果:

[
    {
       "configPath": "Example A"
    }
],
[
   {
       "configPath": "Example B"
   }
] 

但我的结果JSON应该只有一个数组,我可以在我的代码中循环,如

configPaths.forEach(configPath) {  ...  }

1 个答案:

答案 0 :(得分:0)

这是一个非常基本的零验证实现,应该足以让您入门。

grunt.registerMultiTask('concatArrays', 'concatArrays', function() {
    this.files.forEach(function(_set) {
        var combined = [];
        _set.src.forEach(function(_file) {
            combined = combined.concat(JSON.parse(grunt.file.read(_file)));
        });
        grunt.file.write(_set.dest, JSON.stringify(combined));
    });
});

您可以配置文件集,如:

concatArrays: {
    local: {
        files: [{
            src: ['a.json', 'b.json'],
            dest: 'combined.json'
        }],
    }
}