Gruntjs循环执行咕gr的“复制文件”任务

问题描述

我正在尝试将index.html文件复制到多个文件夹。我一直在寻找堆栈溢出,几乎找到了我正在寻找的解决方案。在我的示例中,循环仅将index.html文件复制到folders数组的最后一个文件夹。我不知道我在忽略什么。有什么想法吗?

module.exports = function(grunt){

grunt.initConfig({
    copy:{
        files:{
            flatten:true,expand: false,src: [
                'scaffold/index.html',],dest: "dist/<%= grunt.option('folder') %>/",filter: 'isFile',force: true
        }
    }
})

function copytoFolders() {

    var folders = ["300x600","300x250","336x280"],folder;

    for (folder in folders) 
    {
        grunt.option('folder',folders[folder]);
        grunt.task.run('copy');
    }
}

grunt.loadNpmtasks('grunt-contrib-copy-force');
grunt.registerTask('copyFol',copytoFolders)

}

解决方法

好吧,我通过看这篇文章解决了它: stack overflow post

因此基本上,现在它返回一个文件对象数组,并在调用默认任务时执行目标文件。

以下是适合我的脚本:

module.exports = function(grunt) {

function getFiles() {
    var folders = ["300x600","300x250","336x280"];
    var files = [];
    for (var folder in folders) {
        files.push({
            flatten:true,expand: true,src: [
                'scaffold/index.html',],dest: "dist/" + folders[folder] + "/",filter: 'isFile'
        });
    }
    return files;
}

grunt.initConfig({
    copy: {
        core: {
            files: getFiles()
        }
    }
});

grunt.loadNpmTasks('grunt-contrib-copy');
grunt.registerTask('default',['copy:core']);

};