大多数的contrib任务,包括 jshint task、concat task 和 uglify task 都是复合任务。
grunt.task.registerMultiTask(taskName, description, taskFunction)
给定以下配置信息,当执行grunt log:foo
时,下面的复合任务将输出日志foo: 1,2,3
;当执行grunt log:bar
时,将输出日志bar: hello world
。如果只是执行grunt log
,那么,将先输出日志foo: 1,2,3
,然后是bar: hello world
,最后是baz: false
。
grunt.initConfig({
log: {
foo: [1, 2, 3],
bar: 'hello world',
baz: false
}
});
grunt.task.registerMultiTask('log', 'Log stuff.', function() {
grunt.log.writeln(this.target + ': ' + this.data);
});
参见 创建任务 文档以获取更多复合任务的案例。
此方法还可以通过 grunt.registerMultiTask 调用。
grunt.task.requires
Fail the task if some other task failed or never ran.
grunt.task.requires(taskName);
grunt.task.exists
Added in 0.4.5
Check with the name, if a task exists in the registered tasks. Return a boolean.
grunt.task.exists(name)
grunt.task.renameTask
重命名任务。如果你希望覆盖某个任务的默认行为,并且希望保留原来的名字,这个函数将会很有用。
注意,如果一个任务已经被重命名了, this.name 和 this.nameArgs 属性都会发生相应的变化。
grunt.task.renameTask(oldname, newname)
此方法还可以通过 grunt.renameTask 调用。
加载外部定义的任务
对于多数项目来说,Gruntfile 文件中可能会定义很多任务。对于大型项目或者需要在多个项目中共享任务的情况,可以从一个或多个外部目录加载任务,或者从npm安装的 Grunt 插件加载任务。
grunt.task.loadTasks
从指定的目录(注意:相对于 Gruntfile 所在目录)加载任务相关的文件。此方法可以从本地Grunt插件加载任务相关的文件,只需指定包含"tasks"子目录的插件目录即可。
grunt.task.loadTasks(tasksPath)
此方法还可以通过 grunt.loadTasks 调用。
grunt.task.loadNpmTasks
从指定的 Grunt 插件中加载任务。此插件必须通过npm安装到本地,并且是参照 Gruntfile 文件的相对路径。Grunt插件还可以通过 grunt-init grunt插件模版创建: grunt init:gruntplugin
。
grunt.task.loadNpmTasks(pluginName)
此方法还可以通过 grunt.loadNpmTasks 调用。
队列任务
Grunt自动将命令行中指定的任务加入队列并执行,但是,一些独特的任务可以向队列中加入额外需要执行的任务。
grunt.task.run
将一个或多个任务放入队列中。 taskList
中的每个任务都会按照其在队列中的顺序,在当前任务执行完毕后立即执行。任务列表可以是一个任务数组或单个任务。
grunt.task.run(taskList)
grunt.task.clearQueue
完全清空任务队列。除非将额外的任务加入队列,否则将不会执行任何任务。
grunt.task.clearQueue()
grunt.task.normalizeMultiTaskFiles
将目标(target)的配置对象标准化为一个src-dest文件映射数组。此方法在内部由复合任务系统的this.files / grunt.task.current.files属性调用。
grunt.task.normalizeMultiTaskFiles(data [, targetname])
标签:Grunt
相关阅读 >>
更多相关阅读请进入《Grunt》频道 >>
Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者