2012-11-25 4 views
8

Mam problem ze zrozumieniem zagnieżdżania, które czasami pojawia się w plikach grunt.js. W poniższym przykładzie, co oznaczają obiekty zagnieżdżone, takie jak concat.dist i min.dist? Czy klucz dist odwołuje się do innego nazwanego zadania, czy jest to po prostu obiekt konfiguracyjny? Co dokładnie jest wywoływane podczas wykonywania zadań concat i min?Co oznacza literał obiektu zagnieżdżonego w plikach 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"); 
}; 

Odpowiedz

10

W grunt, zadania, które wspierają tego rodzaju gniazdowania są nazywane multi tasks i zagnieżdżone obiekty nazywane są cele. Załóżmy, że masz następujące wielozadaniowej:

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

Oznacza to, że mają wielu zadaniem concat z celami dist i dev wewnątrz niego. Możesz uruchomić wszystkie cele dowolnego zadania wielozadaniowego, wpisując nazwę zadania na konsoli. Na przykład:

grunt concat 

będzie działał zarówno concat i dev. Z drugiej strony, można również określić, które kierować do uruchomienia wyraźnie:

grunt concat:dist 

wykona tylko dist cel.

O ile mi wiadomo, jeśli masz dwie multitasks z celów tej samej nazwie (jak Twój przykład min.dist i concat.dist), to nie znaczy, że zarówno dist są jakoś odnosząc się do tej samej rzeczy, po prostu mają takie samo imię.

+0

mogę uwierzyć w to co masz na myśli jako „cele” nazywane są podzadania w gruntjs. tutaj jest wielozadaniowość, która używa 'dist' i' dev' jako przykład podzadania – jonschlinkert

+0

W dokumencie Grunta na githubu używają terminu cel: "Możesz uruchomić wszystkie cele dowolnego zadania wielozadaniowego, po prostu określając nazwę zadania. , działające strzępki chrząstki automatycznie uruchamiałyby cały cel ... " – alemangui

+0

Interesujące, wygląda na to, że" cel "jest tym, co oficjalnie dokumentują, ale podzadanie jest również często używane w opisach i przykładach - szczególnie w przypadku powtórzeń zadań (SO usunąłem podany link). Czy wiesz, czy istnieje zamiar odróżnienia tych dwóch pojęć? lub przesłonił "stary termin" do opisu celów? po prostu ciekawy w tym momencie, zwłaszcza biorąc pod uwagę, że nowi użytkownicy mogą być zdezorientowani. – jonschlinkert

0

Jak stanach odpowiedź, te cele lub „Multi” .. Zrobiłem vid na wielu zadań here