2016-06-10 3 views
3

Ich versuche, eine Aufgabe in grunt auszuführen, es geht auf eine URL und speichert die Antwort in einer Datei, aber ich möchte es zu verschiedenen URLs gehen und verschiedene Dateien entsprechend machen. Also ich bin eine Schleife und bei jeder Iteration die Daten in Config ändern. Die Tasks werden jedoch am Ende der Schleife angehängt. Wenn die Schleife abgeschlossen ist und alle Werte in config geändert werden, wird der Task 30 Mal mit den zuletzt geänderten Werten in der Config ausgeführt und schließlich immer nur 1 Datei 30 Mal erstellt . Hier ist mein Code Wie führe ich eine grunt-Aufgabe in einer for-Schleife aus, während ich die Daten in der config dynamisch ändere?

module.exports = function(grunt){ 
 
\t grunt.initConfig({ 
 
\t \t id:0, 
 
\t \t http:{ 
 
\t \t \t devel:{ 
 
\t \t \t options: { 
 
\t \t \t url: 'http://127.0.0.1:8000/foo/<%= id %>/' 
 
\t \t \t }, 
 
\t \t \t dest: 'www/foos/foo<%= id %>.json' 
 
\t \t \t } 
 
\t \t } 
 
\t }); 
 
\t grunt.loadNpmTasks('grunt-http'); 
 
\t grunt.registerTask("default", function(){ 
 
    for (var i = 30; i > 1; i--) { 
 
     grunt.config.set("id", i); 
 
     var d = grunt.config.get("id"); 
 
     grunt.log.writeln("id = "+d); 
 
     grunt.task.run("http"); 
 
    } 
 
    }); 
 
};

+0

Vielleicht wird dieser Link hilfreich sein: http://stackoverflow.com/a/37716046/3397771 – 76484

+0

Das ist nicht hilfreich war, da ich selbst einige Argumente, um die Aufgabe zu übergeben will, in einem gewissen Sinne. (Das zu übergebende Argument ist der Iterationsindex der Schleife) –

Antwort

0

ich nicht 100% sicher bin, was Sie zu tun versuchen, aber dieser Code sollte funktionieren. Sie müssen eine eindeutige Aufgabe für jede HTTP-Aufgabe erstellen, die Sie ausführen möchten.

module.exports = function(grunt){ 
    grunt.initConfig({ 
     http:{ 
     } 
    }); 
    grunt.loadNpmTasks('grunt-http'); 

    var http = {}; 

    for (var i = 5; i > 1; i--) { 
     grunt.log.writeln("id = " + i); 

     http['devel' + i] = { 
      options: { 
       url: 'http://127.0.0.1:8000/foo/' + i 
      }, 
      dest: 'www/foos/foo' + i + '.json' 
     }; 
    } 

    grunt.config.set("http", http); 

    grunt.registerTask("default", "http"); 
}; 
+0

Danke für die Antwort. Mein Problem wurde früher gelöst. Ich habe auch so etwas benutzt. –

Verwandte Themen