manlili blog

grunt创建任务

上一节提到了grunt的配置,配置好了以后紧接着是创建任务,然后运行任务。

创建单任务

语法格式:

1
grunt.registerTask(taskName, [description, ] taskList)

如果你没有指定一个任务,并且你已经定义一个名为 “default” 的任务,那么该任务将会默认被执行.
比如:

1
grunt.registerTask('default', ['jshint', 'qunit', 'concat', 'uglify']);

上面定义了一个 ‘default’ 任务,如果右键打开gitBash运行Grunt时没有指定任何任务,它将自动执行’jshint’、’qunit’、’concat’ 和 ‘uglify’ 任务。

再举个例子:

1
grunt.registerTask('dist', ['concat:dist', 'uglify:dist']);

上面定义了一个 “dist”任务,如果右键打开gitBash运行Grunt dist时, 将执行 “concat” 和 “uglify” 两个任务,并且它们都带有一个 “dist” 参数。

创建多任务

语法格式:

1
grunt.registerMultiTask(taskName, [description, ] taskFunction)

举个例子:

1
2
3
4
5
6
7
grunt.initConfig({
log: {
foo: [1, 2, 3],
bar: 'hello world',
baz: false
}
});

上面例子:
①通过grunt log:foo运行Grunt,它会输出foo: 1,2,3
②通过grunt log:bar来运行Grunt,它会输出bar: hello world
③通过grunt log运行Grunt, 它会输出foo: 1,2,3,然后是bar: hello world,最后是baz: false

自定义任务

语法格式:

1
2
3
grunt.registerTask('default', '自定义任务名称', function(参数) {
你的自定义任务执行的内容
});

右键打开gitBash运行Grunt时,就会把你的自定义任务运行。

在一个任务内部,你可以执行其他的任务。假设存在bar和baz两个任务,举个例子:

1
2
3
4
5
grunt.registerTask('foo', '自定义任务名称', function() {
grunt.task.run('bar', 'baz');
// Or:
grunt.task.run(['bar', 'baz']);
});

注意:当运行自定义任务失败时,所有后续任务都将终止,除非指定 –force 。

异步执行任务

自定义任务时可以异步执行任务

1
2
3
4
grunt.registerTask('asyncme', '自定义任务名称', function() {
var done = this.async(); //Grunt使用同步的编码风格,可以在task体中通过调用 this.async() 将其转换为异步的
doSomethingAsync(done);
});

请我喝杯果汁吧!