下面的源配置示例处理来自src
dir的文件。 src2
目录也应该使用相同的任务进行处理并推送到build2
。配置需要进行哪些更改。
module.exports = function (grunt) {
var saveLicense = require('uglify-save-license');
grunt.initConfig({
clean : {
build : {
src : ['build']
},
},
copy : {
files : {
cwd : 'src',
src : '**/*',
dest : 'build',
expand : true
}
},
...
答案 0 :(得分:0)
grunt-contrib-copy和grunt-contrib-clean与许多其他grunt插件一样,允许在每个Targets中指定多个Task。
对于您的方案,您只需在copy
任务中配置两个目标(一个目标可复制src
文件夹,另一个目标可复制src2
文件夹)。
您还可以在clean
任务中配置两个目标(一个目标用于清除build
文件夹,另一个目标用于清除build2
文件夹)。
<强> Gruntfile.js 强>
您的Gruntfile.js
可以配置为以下内容:
module.exports = function(grunt) {
var saveLicense = require('uglify-save-license');
grunt.initConfig({
// The 'clean' task now includes two targets.
// named 'build1' and 'build2'
clean: {
build1: {
src: ['build']
},
build2: {
src: ['build2']
}
},
// The 'copy' task now includes two targets.
// named 'src1' and 'src2'
copy: {
src1: {
cwd: 'src',
src: '**/*',
dest: 'build',
expand: true
},
src2: {
cwd: 'src2',
src: '**/*',
dest: 'build2',
expand: true
}
}
// ...
});
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-clean');
// Registering the Targets in the Tasks....
grunt.registerTask('copySrc1', ['copy:src1']);
grunt.registerTask('cleanBuild1', ['clean:build1']);
grunt.registerTask('copySrc2', ['copy:src2']);
grunt.registerTask('cleanBuild2', ['clean:build2']);
grunt.registerTask('copyBoth', ['copy']);
grunt.registerTask('cleanBoth', ['clean']);
};
运行Grunt任务
您会注意到在代码段末尾有六次调用.registerTask(...)
功能。即; copySrc1
,cleanBuild1
,copySrc2
,cleanBuild2
,copyBoth
和cleanBoth
。
它们允许您通过命令行运行以下命令:
$ grunt copySrc1
(这会将src
文件夹复制到build
文件夹)
$ grunt cleanBuild1
(这将清除build
文件夹)
$ grunt copySrc1
(这会将src2
文件夹复制到build2
文件夹)
$ grunt cleanBuild2
(这将清除build2
文件夹)
$ grunt copyBoth
(这会将src
文件夹复制到build
文件夹,并将src2
文件夹复制到build2
文件夹
$ grunt cleanBoth
(这会清除build
和build2
文件夹)
备注强>
您可能只需要保留两个.registerTask(...)
函数,如下所示:
grunt.registerTask('copyBoth', ['copy']);
grunt.registerTask('cleanBoth', ['clean']);
但是,我包含了其他四个.registerTask(...)
函数,因为它们演示了如何使用分号表示法(:
)在任务中调用单个目标。例如:
grunt.registerTask('copySrc1', ['copy:src1']);
在上面的代码段中,['copy:src1']
部分只运行src1
任务中名为copy
的目标。
鉴于:
grunt.registerTask('copyBoth', ['copy']);
...不引用copy
任务中的任何目标(即没有使用分号表示法),因此将运行所有目标。
要进一步了解“任务”,“目标”,您可以阅读我对此post的回答。
希望有所帮助!