Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Grunt任务目标阵列?_Javascript_Arrays_Gruntjs_Build Process - Fatal编程技术网

Javascript Grunt任务目标阵列?

Javascript Grunt任务目标阵列?,javascript,arrays,gruntjs,build-process,Javascript,Arrays,Gruntjs,Build Process,我可以将多个文件数组设置为一个目标: task:{ target:{ files:[ { expand:true, cwd:'client/', dest:'server/', src:[ 'scripts/**/*.js', 'styles/

我可以将多个文件数组设置为一个目标:

task:{
    target:{
        files:[
            {
                expand:true,
                cwd:'client/',
                dest:'server/',
                src:[
                    'scripts/**/*.js',
                    'styles/**/*.css',
                    'images/**'
                ]
            },
            {
                expand:true,
                cwd:'client/assets/',
                src:'**/*',
                dest:'server/'
            }
        ]
    }
}
现在我想对一个目标做同样的事情

像这样:

task:{
    server:[
        {
            options:{
                …
            },
            files:{
                …
            }
        },
        {
            options:{
                …
            },
            files:{
                …
            }
        }
    ]
}
但这不适用于Grunt:

Warning: Object #<Object> has no method 'indexOf' Use --force to continue.
警告:对象#没有使用“indexOf”方法--强制继续。
我怎么做

现在,我使用此方案执行相同的操作:

task:{
    server_<subtask_one>:{
        options:{
            …
        },
        files:{
            …
        }
    },
    server_<subtask_second>:{
        options:{
            …
        },
        files:{
            …
        }
    }
}
任务:{
服务器名称:{
选项:{
…
},
档案:{
…
}
},
服务器名称:{
选项:{
…
},
档案:{
…
}
}
}
但对每个子任务重复任务前缀,然后将它们放在单独的行中,这样做并不方便:

'dataSeparator:<target>_<subtask_one>',
'dataSeparator:<target>_<subtask_second>',
'dataSeparator:\ux',
“DataSepator:389;”,

除非您想编写自定义任务,否则这是您唯一的选择。但大多数任务都允许您在任务级别指定
选项
块,因此您至少可以节省一些重复:

task:{
    options:{
        // options common to all tasks
    },
    server_<subtask_one>:{
        options:{
            // override options if necessary
        },
        files:{
            // custom for this target
        }
    },
    server_<subtask_second>:{
        options:{
            // override options if necessary
        },
        files:{
            // custom for this target
        }
    }
}
任务:{
选项:{
//所有任务的通用选项
},
服务器名称:{
选项:{
//如有必要,覆盖选项
},
档案:{
//此目标的自定义
}
},
服务器名称:{
选项:{
//如有必要,覆盖选项
},
档案:{
//此目标的自定义
}
}
}
正如我所说,您可能可以编写一个自定义任务来动态重置每个目标,但这是混乱的,我不建议这样做。。。甚至不确定它是否能正常工作

grunt.registerTask('mutli-task', 'Compile options and pass to task', function() {

    grunt.config.set('task.server_<subtask_one>.some_setting', 'value');
    // ...
    grunt.task.run('task');

    // Now do it again, but with different settings... maybe in a loop?
});
grunt.registerTask('mutli-task','Compile options and pass to task',function(){
grunt.config.set('task.server_u.some_setting','value');
// ...
grunt.task.run('task');
//现在再做一次,但是用不同的设置…可能在一个循环中?
});