在 Gruntfile.js 中动态合并 JSON 个文件

Dynamic merge of JSON files in Gruntfile.js

在我的 gruntfile.js 中,我正在使用这个插件 `grunt.loadNpmTasks('grunt-json-merge');我正在尝试使用此代码合并两个 JSON 文件:

    json_merge: {
        files: {
            files: { 'dest/resources/locales/merged.json':
                function () {
                    var includedScripts = [];
                                    includedScripts.push(project_x+'/locales/locale-fr.json');
                                    includedScripts.push(project_y+'/locales/locale-fr.json');
                    return includedScripts;

}
            },
        },
    }

我得到Warning: pattern.indexOf is not a function Use --force to continue.

注意:我需要使用函数 来定义输入值 ,因为它包含一些变量,也许我稍后需要集成一个 for 循环。

使用的库是这个https://github.com/ramiel/grunt-json-merge

问题是files对象中的一个条目的值应该是一个数组,但是因为你没有调用函数,只是声明了它,值是一个函数。

这应该有效:

json_merge: {
    files: {
        files: { 'dest/resources/locales/merged.json':
            (function () {
                var includedScripts = [];
                includedScripts.push(project_x+'/locales/locale-fr.json');
                includedScripts.push(project_y+'/locales/locale-fr.json');
                return includedScripts;
            })() // call the function here to return the array
        },
    }
}

但您可能还会发现提取函数、为其命名,然后在任务中按名称调用它更方便:

function getJSONFilesToMerge () {
    var includedScripts = [];
    includedScripts.push(project_x+'/locales/locale-fr.json');
    includedScripts.push(project_y+'/locales/locale-fr.json');
    return includedScripts;
}

// .....

json_merge: {
    files: {
        files: { 
            'dest/resources/locales/merged.json': getJSONFilesToMerge()
        },
    }
}