如何在动态更改配置中的数据的同时在for循环中运行grunt任务?

时间:2016-06-10 13:34:52

标签: gruntjs

我正在尝试在grunt中运行任务,它转到URL并将响应保存在文件中,但我希望它转到不同的URL并相应地生成不同的文件。 所以我正在运行一个循环,并在每次迭代时更改config中的数据。 但是任务运行会在循环结束时附加,因此当循环完成时,更改config中的所有值,它会使用配置中最新更改的值运行任务30次,最后一次又创建30次文件。 这是我的代码

module.exports = function(grunt){
	grunt.initConfig({
		id:0,
		http:{
			devel:{
			options: {
			  url: 'http://127.0.0.1:8000/foo/<%= id %>/'
			},
			dest: 'www/foos/foo<%= id %>.json'
			}
		}
	});
	grunt.loadNpmTasks('grunt-http');   
	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");
    }
  });
};

1 个答案:

答案 0 :(得分:0)

我不是百分之百确定你要做的是什么,但这段代码应该可行。您需要为要运行的每个http任务创建唯一任务。

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");
};