自定义的grunt任务正在重复,而不是按顺序运行

时间:2015-04-15 17:32:36

标签: javascript node.js gruntjs

我无法在Grunt中正确排序任务。

我正在构建的内容中包含了大量代码,因此我将简化代码以向您展示我正在努力解决的问题。我有一个文件夹,其中有一堆以4位ID号开头的文件。每个ID大约有12个文件,总JSON数据约为200MB。

我的任务看起来像这样:

// Run data by ID
grunt.registerTask('run', 'Publish data for a single ID', function(id) {

   var done = this.async();

   // (1) Process data for that ID and store it into 6 huge arrays

   // (2) DB connection opened and each array is inserted
   //     into 6 different collections via mongoose

   grunt.log.ok('ID '+id+' has processed');

   db.close(), done();

});

此任务可以正常工作。根据ID的总文件大小,此任务需要每个ID 15-45秒。

我的下一个挑战是更进一步,使用grunt.file.recurse()查找目录中的所有ID,然后为每个id启动后续“运行”任务。没有进入grunt.file.recurse(),这是一个如何运行3个ID的基本示例:

// Run data
grunt.registerTask('runALL', 'Publish all data', function(id) {

  grunt.task.run(['run:0001','run:0002','run:0003']); // etc

});

当我发出命令“grunt runALL”时,咕噜日志错误地说......

>> ID 0001 has processed

>> ID 0001 has processed
>> ID 0002 has processed

>> ID 0001 has processed
>> ID 0002 has processed
>> ID 0003 has processed

所以你可以看到......每次进入另一次迭代时,它都会从头开始。相反,我希望任务按顺序运行,结果如...

>> ID 0001 has processed
>> ID 0002 has processed
>> ID 0003 has processed

我做错了什么,如何让每个ID仅从“runALL”任务运行一次?感谢您提供任何建议。

0 个答案:

没有答案