黑人的命也是命

grunt.task

注册、运行和加载外部任务。

有关更多信息,请参阅 任务库源代码任务工具库源代码

任务 API

在任务运行时,Grunt 通过 this 对象在任务函数内部公开许多特定于任务的实用程序属性和方法。有关这些属性和方法的列表,请参阅任务内部指南。

许多实用程序属性和方法可通过 this 对象在任务内部使用。

请注意,任何标有 ☃(Unicode 雪人)的方法也可以直接在 grunt 对象上使用。仅供参考。有关更多使用信息,请参阅API 主页

创建任务

grunt.task.registerTask ☃

注册“别名任务”或任务函数。此方法支持以下两种签名

别名任务

如果指定了任务列表,则新任务将是一个或多个其他任务的别名。每当运行此“别名任务”时,taskList 中指定的每个任务都将按指定的顺序运行。taskList 参数必须是任务数组。

grunt.task.registerTask(taskName, taskList)

如果传递了可选的 description 字符串,则在运行 grunt --help 时将显示该字符串

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

此示例别名任务定义了一个“默认”任务,如果在未指定任何任务的情况下执行 Grunt,则将自动运行“jshint”、“qunit”、“concat”和“uglify”任务

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

也可以指定任务参数。在此示例中,别名“dist”运行“concat”和“uglify”任务,每个任务都带有“dist”参数

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

函数任务

如果传递了 descriptiontaskFunction,则在每次运行任务时都会执行指定的函数。此外,在运行 grunt --help 时将显示指定的描述。特定于任务的属性和方法在任务函数内部作为 this 对象的属性可用。任务函数可以返回 false 以指示任务已失败。

请注意,下面解释的 grunt.task.registerMultiTask 方法可用于定义一种称为“多任务”的特殊类型的任务。

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

如果通过 grunt foo:testing:123 运行 Grunt,则此示例任务将记录 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

grunt.task.registerMultiTask ☃

注册“多任务”。多任务是一种隐式迭代其所有命名的子属性(也称为目标)的任务,前提是没有指定目标。除了默认属性和方法之外,任务函数内部还可以使用额外的多任务特定属性作为 this 对象的属性。

许多贡献任务,包括 jshint 任务concat 任务uglify 任务 都是多任务。

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

给定指定的配置,如果通过 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

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

如果其他某个任务失败或从未运行,则使任务失败。

grunt.task.requires(taskName);

grunt.task.exists

添加于 0.4.5 版本

使用名称检查注册任务中是否存在任务。返回一个布尔值。

grunt.task.exists(name)

grunt.task.renameTask ☃

重命名任务。如果您想覆盖任务的默认行为,同时保留旧名称,这可能会很有用。

请注意,如果任务已重命名,则 this.namethis.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-init gruntplugin 模板 创建 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

将任务目标配置对象规范化为 src-dest 文件映射数组。此方法由多任务系统 this.files / grunt.task.current.files 属性在内部使用。

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