2012-11-25 68 views
8

我無法理解有時顯示在grunt.js文件中的嵌套。在下面的例子中,像concat.distmin.dist這樣的嵌套對象是什麼意思? dist鍵是引用另一個命名的任務嗎?或者它只是一個配置對象?在執行concatmin任務時會調用什麼?grunt.js文件中的嵌套對象文字是什麼意思?

module.exports = function (grunt) { 
    grunt.initConfig({ 
    // … 
    concat: { 
     dist: { 
     src: ["<banner:meta.banner>", "<file_strip_banner:lib/main.js>"], 
     dest: "dist/main.js", 
     } 
    }, 
    min: { 
     dist: { 
     src: ["<banner:meta.banner>", "<config:concat.dist.dest>"], 
     dest: "dist/main.min.js", 
     } 
    }, 
    // … 
    }); 

    // … 
    grunt.registerTask("default", "lint qunit concat min"); 
}; 

回答

10

在咕嚕,在支持這種嵌套的任務被稱爲multi tasks,並嵌套對象被稱爲目標。假設你有以下多任務:

concat: { 
    dist: { 
     src: ["<banner:meta.banner>", "<file_strip_banner:lib/main.js>"], 
     dest: "dist/main.js", 
    }, 
    dev: { 
     (...) 
    } 
} 

這意味着你必須多任務CONCAT與目標DIST開發裏面。您可以通過在控制檯上鍵入任務的名稱來運行任何多任務的所有目標。例如:

grunt concat 

將運行concat和dev。在另一方面,你還可以指定哪個目標明確地運行:

grunt concat:dist 

只會執行DIST目標。

據我所知,如果你有兩個多任務名稱相同的目標(像你的榜樣min.distconcat.dist),這並不意味着這兩個DIST都弄好引用同樣的東西,他們只是碰巧分享了同一個名字。

+0

我相信你指的是「目標」所謂的gruntjs子任務。這裏是一個使用'dist'和'dev'作爲示例子任務的多任務 – jonschlinkert

+0

在Grunt的github文檔中,他們使用術語target:「只需指定任務的名稱就可以運行任何多任務的所有目標。 ,運行grunt lint會自動運行所有目標......「 – alemangui

+0

有趣的是,它看起來像」目標「是他們正式記錄的內容,但子任務在描述和例子中也有很多使用 - 特別是在任務回收(SO刪除了我提供的鏈接)。你知道是否有意將這兩個術語區分開來嗎?或者是否是描述目標的「舊術語」?只是對此感到好奇,特別是考慮到新的咕嚕用戶可能會被它迷惑。 – jonschlinkert

0

像回答狀態,那些或「多目標」。我做了多任務的VID here

相關問題