如何在Grunt Build中使用多个复制命令?

时间:2014-11-10 09:55:54

标签: javascript gruntjs

我想复制一些文件,运行其他任务,然后再复制一些文件:

copy:{....},
concat:{...},
copy:{...}

但是,当我运行我的grunt构建时出现以下错误:

SyntaxError: Duplicate data property in object literal not allowed in strict mode

我当然理解,我不能在grunt json中多次使用相同的属性(即" copy")。但是我的问题的解决方案是什么?如何在gruntfile.js的不同位置复制?

非常感谢!

2 个答案:

答案 0 :(得分:2)

只需将copy评论拆分为所需的子任务:

copy: {
    task1: {
        files: [...]
    }
    task2: {
        files: [...]
    },
    task3: {
        files: [...]
    }
}

然后像那样运行Grunt:

grunt.registerTask('development', [ 'copy:task1', 'concat', 'copy:task2' ]);

答案 1 :(得分:1)

我做同样的工作。这是我的任务,就在Gruntfile的末尾:

grunt.registerTask('client', [
    'concat:app_js',
    'concat:lib_js',
    'uglify:app_lib_js',
    'concat:client_js',
    'concat:client_css',
    'includes',
    'concat:client_html',
    'copy:client_gfx',
    'copy:client_xml'
]);

这引用了一个更高的结构,如下所示:

module.exports = function(grunt) {

grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),

    concat: { ... concat jobs here ... },

    // This is how to have multiple copy jobs
    copy: {
        client_gfx: {
            // spec here
        },
        client_xml: {
            // spec here
        }
    }
}
}