注冊,運行以及加載外部任務(wù)。
查看task lib source和task util lib source可以了解更多詳細(xì)信息。
當(dāng)一個任務(wù)運行時,Grunt通過任務(wù)函數(shù)內(nèi)部的this對象將任務(wù)內(nèi)部的大部分任務(wù)特定的實用屬性和方法暴露在任務(wù)外面??梢栽?a rel="nofollow" >內(nèi)置任務(wù)指南中查看它們屬性和方法列表。
許多實用的屬性和方法通過任務(wù)內(nèi)部this對象來訪問都是有效的。
注意,任何使用?(unicode雪人)標(biāo)記的方法在任務(wù)內(nèi)部直接通過grunt對象來訪問都是有效的?,F(xiàn)在你只需要知道就可以了??梢圆榭?a rel="nofollow" >API主頁了解更多詳細(xì)的用法信息。
這個方法用于注冊一個"別名任務(wù)"或者一個任務(wù)函數(shù)。這個方法支持下面兩種簽名方式:
如果指定了一個任務(wù)列表,新的任務(wù)[任務(wù)列表之前的任務(wù)名]就是一個或者其他多個任務(wù)的別名。每當(dāng)這個"別名任務(wù)"運行時,每個指定在tasklist中指定任務(wù)都會按照它們所指定的順序一次運行。tasklist參數(shù)必須是一個任務(wù)數(shù)組。
grunt.task.registerTask(taskName, taskList)
這里有一個別名任務(wù)的例子,我定義了一個"default"任務(wù),這個"default"任務(wù)包含"jshint","qunit","concat"和"uglify"這幾個不同的任務(wù),執(zhí)行Grunt(在命令行運行grunt)而不指定任何特定的任務(wù)時這些任務(wù)列表中的任務(wù)都會按照指定的順序自動執(zhí)行。
task.registerTask("default", ["jshint", "qunit", "concat", "uglify"])
也可以給任務(wù)指定任務(wù)參數(shù)。這里有一個例子,我們定義了一個會執(zhí)行"concat"和"uglify"這兩個任務(wù)的別名任務(wù)"dist",并且它們都都帶有一個名為"dist"參數(shù):
task.registerTask("dist", ["concat:dist", "uglify:dist"])
如果傳遞一個description和1taskFunction,每當(dāng)任務(wù)運行時對應(yīng)的指定的函數(shù)都會執(zhí)行。此外, 當(dāng)運行grunt --help時,指定的描述(description參數(shù))也會顯示出來。任務(wù)特性的屬性和方法在任務(wù)內(nèi)部作為this對象的屬性使用也是有效的。任務(wù)函數(shù)可以返回一個false`來表示任務(wù)失敗。
注意grunt.task.registerMultiTask方法,可以用于定義一個特殊類型的任務(wù),也就是我們所說的"多任務(wù)",具體的信息后面再解釋。
grunt.task.registerTask(taskName, description, taskFunction)
這里有一個例子,如果通過grunt foo:testing:123命令來運行Grunt,這個任務(wù)就會輸出foo, testing 123。如果運行這個任務(wù)時不傳遞參數(shù),如grunt foo,這個任務(wù)就會輸出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);
}
});
可以查看創(chuàng)建任務(wù)文檔中更多的任務(wù)和別名任務(wù)的例子。
這個方法也可作為grunt.registerTask來使用。
注冊一個"多任務(wù)"。一個多任務(wù)就是一個會隱式的遍歷其命名子屬性的任務(wù)(AKA目標(biāo)),在沒有指定目標(biāo)的情況下。除了默認(rèn)的屬性和方法之外,使用任務(wù)內(nèi)部的this對象訪問多任務(wù)特定的屬性也是有效的。
許多contrib(官方維護的任務(wù))任務(wù),包括jshint任務(wù),concat任務(wù)和uglify任務(wù)都是多任務(wù)形式的。
grunt.task.registerMultiTask(taskName, description, taskFunction)
基于一個給定的配置,這里有一個多任務(wù)例子,當(dāng)通過grunt log:foo命令運行Grunt時輸出foo: 1,23,或者通過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);
});
查看創(chuàng)建任務(wù)文檔可以了解更多多任務(wù)的例子。
這個方法也可作為grunt.registerMultiTask來使用。
這個方法用于重命名一個任務(wù)。如果你想覆蓋任務(wù)的默認(rèn)行為,那么對你來說這個方法可能是有用的,同時它還會保留舊的名稱。
注意,如果一個任務(wù)被重命名了,this.name和this.nameArgs屬性也會作出相應(yīng)的改變。
grunt.task.renameTask(oldname, newname)
這個方法也可作為grunt.renameTask來使用。
對于大多數(shù)的項目而言,任務(wù)都會定義項目的在Gruntfile文件中。對于大型項目,或者任務(wù)之間需要跨項目共享的情況下,可以從一個或多個外部目錄中載入任務(wù)或者從使用Npm安裝好的Grunt插件中載入。
從指定的目錄載入任務(wù)相關(guān)的文件,目錄必須相對于Gruntfile所在目錄。這個方法可以用于從一個本地的Grunt插件載入任務(wù)相關(guān)文件,通過指定路徑為插件的"任務(wù)"子目錄的方式就可以做到(即指定文件為插件子目錄中任務(wù)相關(guān)的文件)。
grunt.task.loadTasks(tasksPath)
這個方法也可作為grunt.loadTasks來使用。
從指定的Grunt插件中加載任務(wù)。這個插件必須通過npm在本地安裝好了,并且必須是相對于Gruntfile所在目錄的。Grunt插件可以通過使用grunt-init Grunt插件模板來創(chuàng)建:grunt.init:gruntplugin。
grunt.task.loadNpmTasks(pluginName)
這個方法可作為grunt.loadNpmTasks來使用。
Grunt會自動排列和運行所有在命令行中指定的任務(wù),也有個別任務(wù)可以向隊列中插入需要額外執(zhí)行的任務(wù)。
排入隊列里的一個或多個任務(wù)。每個指定在takList中的任務(wù)都會在當(dāng)前任務(wù)執(zhí)行完成之后立即執(zhí)行,并且是按照它們所指定的順序來執(zhí)行。任務(wù)列表參數(shù)可以是一個任務(wù)數(shù)組或者也可以是單個的任務(wù)。
grunt.task.run(taskList)
徹底清空任務(wù)隊列。除非額外的任務(wù)排入隊列中,否則就不會執(zhí)行其他任務(wù)了。
grunt.task.clearQueue()
標(biāo)準(zhǔn)化一個任務(wù)目標(biāo)配置對象為一個src-dest文件映射數(shù)組。通常這個方法通過this.files/grunt.task.current.files屬性在多任務(wù)系統(tǒng)內(nèi)部使用。
grunt.task.normalizeMultiTaskFiles(data [, targetname])