您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

grunt.task

、执行和加载外部任务。

参见  和  更多信息。

The task API

当任务正在执行时,Grunt 通过this 对象向此任务暴露了很多任务特定的和。参见深入任务内幕指南,这里可以找到完整的和列表。

很多和都可以通过 this 对象访问到。

注意,任何为的 ? (unicode sman) 也可以直接通过 grunt 对象直接访问到。参见 API以更多信息。

创建任务

"别名任务" 或 任务。此以下两种类型:

别名任务

如果指定了任务列表,那么,新的任务将会是这或多个任务的别名(alias)。当此"别名任务"执行时,taskList中的所有任务都将按指定的顺序依次执行。taskList 参数必须是任务数组。

grunt.task.registerTask(taskName, taskList)

下面这个案例展示的是定义"default" 任务,当执行 Grunt 且不通过参数指定任务时, "jshint"、 "qunit"、"concat" 和 "uglify" 任务将执行:

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

还可以指定任务的参数。下面的这个案例中,别名"dist"执行了 "concat" 和 "uglify" 这两个任务,并且都指定了"dist" 参数:

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

任务

如果传入description和taskFunction,每当任务运行时,指定的(taskFunction)都会被执行。此外,当执行 grunt --help时,前面指定的描述(description)就会出来。特定任务的和在任务内部通过this对象的即可访问。如果任务返回false表示任务失败。

注意,grunt.task.registerMultiTask将稍候介绍,它可以被用于定义一种特殊类型的任务,即"复合任务"。

grunt.task.registerTask(taskName, description, taskFunction)

下面这个案例中,当 Grunt 运行grunt foo:testing:123时,日志foo, testing 123。如果运行这个任务时不带参数,如grunt foo,日志foo, no args。

grunt.task.registerTask('foo', 'A sample task that logs stuff.', function(arg1, arg2) {
  if (arguments.length === 0) {
    grunt.log.writeln(this.name + ", no args");
  } else {
    grunt.log.writeln(this.name + ", " + arg1 + " " + arg2);
  }
});

参见创建任务 文档,查看更多任务实现案例和别名任务。

此还可以通过 grunt.registerTask。

"复合任务(multi task)"。 复合任务是指在不指定目标(target)时,将依次执行其所包含的所有已命名的子(sub-properties) (也就是 目标) 。除了认的和外,还可以通过this对象访问复合任务独有的。

大多数的contrib任务, 、 和  都是复合任务。

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.initCon({
  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 。

Fail the task if some other task or never ran.

grunt.task.requires(taskName);

Added in 0.4.5

Check with the name, if a task exists in the registered tasks. Return a boolean.

grunt.task.exists(name)

任务。如果你希望覆盖某个任务的认行为,并且希望保留原来的名字,这个将会很有用。

注意,如果任务已经被了, this.name 和 this.nameArgs 都会发生相应的变化。

grunt.task.renask(oldname, newname)

此还可以通过 grunt.renask 。

加载外部定义的任务

对于多数项目来说,Gruntfile 中可能会定义很多任务。对于大型项目或者需要在多个项目中共享任务的情况,可以从或多个外部目录加载任务,或者从npm安装的 Grunt 加载任务。

从指定的目录(注意:相对于 Gruntfile 所在目录)加载任务相关的。此可以从本地Grunt加载任务相关的,只需指定包含"tasks"子目录的目录即可。

grunt.task.loadTasks(tasksPath)

此还可以通过 grunt.loadTasks 。

从指定的 Grunt 中加载任务。此必须通过npm安装到本地,并且是参照 Gruntfile 的相对路径。Grunt还可以通过 创建: grunt init:gruntplugin。

grunt.task.loadNpmTasks(pluginName)

此还可以通过 grunt.loadNpmTasks 。

队列任务

Grunt将命令行中指定的任务加入队列并执行,但是,一些独特的任务可以向队列中加入额外需要执行的任务。

将或多个任务放入队列中。 taskList 中的每个任务都会按照其在队列中的顺序,在当前任务执行完毕后立即执行。任务列表可以是任务数组或单个任务。

grunt.task.run(taskList)

完全清空任务队列。除非将额外的任务加入队列,否则将不会执行任何任务。

grunt.task.clearQueue()

将目标(target)的配置对象标准化为src-dest映射数组。此在内部由复合任务系统的this.files / grunt.task.current.files。

grunt.task.normalizeMultiTaskFiles(data [, targetname])

联系我
置顶