黑人生命也是命

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 執行為 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

如果其他任務失敗或從未執行,則任務會失敗。

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 外掛程式可以使用 grunt-init gruntplugin 範本 建立: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])