Grunt 深入任务内幕


本文整理自网络,侵删。

深入任务内幕

当一个任务执行时,Grunt通过 this 对象向此任务函数暴露了很多任务特定的属性和方法。 同样这个对象也将暴露为grunt.task.current的形式在 templates中使用,例如,this.name属性也可以作为grunt.task.current.name来使用。

所有任务内部都可以使用的方法/属性

this.async

如果一个任务是异步的,必须调用此方法以通知Grunt。此方法返回一个 "done" 函数,应当在任务执行完毕后调用。false 或 Error 对象都可以传递给done函数,以通知Grunt此任务执行失败。

如果 this.async 方法没有被调用,此任务将会同步执行。

// Tell Grunt this task is asynchronous.
var done = this.async();
// Your async code.
setTimeout(function() {
  // Let's simulate an error, sometimes.
  var success = Math.random() > 0.5;
  // All done!
  done(success);
}, 1000);

this.requires

如果一个任务依赖于另外一个(或一些)任务的成功执行,在其依赖的任务没有运行或者运行失败的情况下,这个方法可以被用来强制Grunt退出。作为这个方法的参数,其依赖的任务列表可以是一个包含多个任务名称的数组,也可以是单个的任务名称。

注意,实际上这个方法并不会运行指定任务列表中的任务,它只是在任务列表中的任务没有成功运行的时候通知系统当前的任务失败了。

this.requires(tasksList)

this.requiresConfig

这个方法可以指定一个或者多个字符串或者数组的配置属性为必需的。如果一个或多个必需的配置属性缺失,就通知系统当前任务失败。

this.requiresConfig(prop [, prop [, ...]])

查看grunt.config文档了解更多关于配置属性相关的信息。

这个方式是grunt.config.requires方法的一个别名。

this.name

当前任务的名称,和定义在grunt.registerTask中的任务名一致。例如,如果以grunt sample或者grunt sample:foo的方式运行一个名为"sample"的任务,那么在这个任务函数内部,this.name的值就是"sample"

注意,如果通过grunt.task.renameTask 重命名了一个task,此属性也会跟着变为新名字。

this.nameArgs

当前任务的名称,包括在命令行中指定的任意使用逗号分割的参数或者标记。例如,如果以grunt sample:foo的方式运行一个名为"sample"的任务,那么在这个任务函数内部,this.nameArgs的值就是"sample:foo"

注意,如果一个任务使用grunt.task.renameTask方法重命名过,那么这个属性也会指向对应的新名称。

this.args

传递给当前任务的参数数组。例如,以grunt sample:foo:bar的方式运行一个名为"sample"的任务,那么在这个任务函数内部,this.args的值就是["foo", "bar"]

注意,在多任务形式中,当前目标(名)会从this.args数组中省略。

this.flags

根据传递给当前任务的参数生成的一个对象。例如,以grunt sample:foo:bar的形式运行一个名为"sample"的任务,那么在这个任务函数内部,this.flags的值是{foo: true, bar: true}

阅读剩余部分

相关阅读 >>

Grunt 概述

安装 Grunt

Grunt 退出码

Grunt.task

Grunt.util

Grunt.log

Grunt 常见问题

Grunt_Grunt 教程

Grunt 配置任务

Grunt 创建插件

更多相关阅读请进入《Grunt》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...