2016-08-23 2 views
0

Ich bin neu zu grunt ... Ich habe gerade versucht, eine benutzerdefinierte Aufgabe (mit TypeScript) zu implementieren, die über eine Reihe von gegebenen Dateien durchlaufen und einige Verarbeitung durchführen soll. Das ist, was ich bisher habe ...Dateien nach benutzerdefinierten Grunt Aufgabe

function gruntFile(grunt: IGrunt): void { 
    grunt.registerMultiTask("custom", "...",() => { 
     this.files.forEach(function(next) { 
      ... 
     }); 
    }); 

    var config: grunt.config.IProjectConfig = { 
     custom: { 
      files: [ 
       "folder1/*.json", 
       "folder2/**/*.json" 
      ] 
     } 
    }; 
    grunt.initConfig(config); 
} 
(module).exports = gruntFile; 

Derzeit kämpfe ich mit der Konfiguration und wie ich die Dateien Array in meiner benutzerdefinierten Task-Handler-Funktion acccess kann. Grunt gibt mir den Fehler, dass es die Eigenschaft forEach von undefined nicht lesen kann. Ich habe auch versucht, eine Konfiguration, die so aussieht ...

var config = { 
    custom: { 
     files : [ 
      { src: "folder1/*.json" }, 
      { src: "folder2/**/*.json" } 
     ] 
    } 
}; 

Nicht sicher, aber ich habe, dass in einigen Tutorials gesehen ...

ich schon ein paar Probe Grunzen-Dateien gesehen habe , aber in jedem Beispiel sieht die Konfiguration ein wenig anders aus, oder Dateien werden in Verbindung mit importierten Tasks und Modulen verwendet, sodass die Beispiele nicht zeigen, wie auf die konfigurierten Dateien zugegriffen wird. Jede Anleitung, die mir hilft, besser zu verstehen, wie es funktioniert (und was ich falsch mache) wird geschätzt.

aktualisiert

ich, dass ich Optionen herausgefunden, über die config-Eigenschaft abfragen kann, aber ich bin nicht sicher, ob dies der richtige Weg ist, es zu tun. In meiner Aufgabe-Handler kann ich diese Liste der konfigurierten Dateien abfragen ...

var files = grunt.config.get("custom.files"); 

..., die die erwartete Array zurückgibt (aber ich finde es ein wenig seltsam Optionen über einen Pfad Ausdruck abzufragen). Ich erkannte, dass (unter Verwendung von TypeScript) der Umfang von this nicht der Kontext der aktuellen Aufgabe ist; das ist der Grund, warum files immer undefiniert war. Ändern der Aufruf registerMutliTask zu ...

grunt.registerMultiTask("custom", "...", function() { ... }); 

... dieses Problem behoben. Ich verwende Platzhalterzeichen im Pfadausdruck. Ich hatte gehofft, dass Grunt diese Ausdrücke erweitern und mir eine Liste aller passenden Pfade geben kann. Existiert diese Funktionalität oder muss ich diese selbst erstellen?

Antwort

2

konnte ich über die konfigurierten Dateien (Dateimuster) wiederholen, indem Sie den folgenden Code verwenden ...

grunt.registerMultiTask("custom", "...", function() { 
    grunt.file 
     .expand(this.data) 
     .forEach(function(file) { 
      ... 
     }); 
}); 
Verwandte Themen