Gruntjs 如何将参数传递给grunt任务?

Gruntjs 如何将参数传递给grunt任务?,gruntjs,copy,arguments,task,options,Gruntjs,Copy,Arguments,Task,Options,我想重构我的grunt复制任务,以避免在多个子任务中重复相同的文件。现在看起来是这样的: "copy": { "web-debug": { files: [ { src: "libs/1st/**/*", dest: config.buildWebDebugOutPath }, { src: "libs/3rd/**/*", dest:

我想重构我的grunt复制任务,以避免在多个子任务中重复相同的文件。现在看起来是这样的:

    "copy":
    {
        "web-debug":
        {
            files:
            [
                { src: "libs/1st/**/*", dest: config.buildWebDebugOutPath },
                { src: "libs/3rd/**/*", dest: config.buildWebDebugOutPath },
                { src: "assets/**/*", dest: config.buildWebDebugOutPath },
                { src: "shared/**/*", dest: config.buildWebDebugOutPath },
                { src: "client/**/*", dest: config.buildWebDebugOutPath },
            ]
        },     
        "web-release":
        {
            files:
            [
                { src: "libs/1st/**/*", dest: config.buildWebReleaseOutPath },
                { src: "libs/3rd/**/*", dest: config.buildWebReleaseOutPath },
                { src: "assets/**/*", dest: config.buildWebReleaseOutPath },
                { src: "shared/**/*", dest: config.buildWebReleaseOutPath },
                { src: "client/**/*", dest: config.buildWebReleaseOutPath },
            ]
        },        
理想情况下,我只有一个复制任务,它接受一个路径参数,我可以通过别名任务传递给它,如下所示:

//
// Let's assume I renamed "web-debug" to "web-files"
//
grunt.registerTask("web-debug", ["web-files:<some debug path>"]);
grunt.registerTask("web-release", ["web-files:<some release path>"]);
"copy":
{
    "web-files":
    {
        files:
        [
            { src: "libs/1st/**/*", dest: "<%= grunt.task.current.args[0] %>" },
            { src: "libs/3rd/**/*", dest: "<%= grunt.task.current.args[0] %>" },
            { src: "assets/**/*", dest: "<%= grunt.task.current.args[0] %>" },
            { src: "shared/**/*", dest: "<%= grunt.task.current.args[0] %>" },
            { src: "client/**/*", dest: "<%= grunt.task.current.args[0] %>" },
        ]
    }
//
//假设我将“web调试”重命名为“web文件”
//
registerTask(“web调试”,“web文件:”);
registerTask(“web发布”,“web文件:”);
最简单的方法是什么


如何访问任务本身中传入的参数?

您可以使用模板,如本文所述。在代码的上下文中,它可能如下所示:

//
// Let's assume I renamed "web-debug" to "web-files"
//
grunt.registerTask("web-debug", ["web-files:<some debug path>"]);
grunt.registerTask("web-release", ["web-files:<some release path>"]);
"copy":
{
    "web-files":
    {
        files:
        [
            { src: "libs/1st/**/*", dest: "<%= grunt.task.current.args[0] %>" },
            { src: "libs/3rd/**/*", dest: "<%= grunt.task.current.args[0] %>" },
            { src: "assets/**/*", dest: "<%= grunt.task.current.args[0] %>" },
            { src: "shared/**/*", dest: "<%= grunt.task.current.args[0] %>" },
            { src: "client/**/*", dest: "<%= grunt.task.current.args[0] %>" },
        ]
    }
“复制”:
{
“web文件”:
{
文件夹:
[
{src:“libs/1st/***”,dest:“},
{src:“libs/3rd/***”,dest:“},
{src:“资产/****”,目标:},
{src:“shared/***”,dest:},
{src:“client/***”,dest:},
]
}
您可以传入完整路径,也可以只传入部分“调试”或“发布”路径段