0

在我的 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

4

1 回答 1

1

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

这应该有效:

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()
        },
    }
}
于 2019-08-01T14:58:03.590 回答