2015-01-25 3 views
1

Я не могу обернуть голову вокруг базового цикла, который запускает задачи последовательно, и я не могу понять это. В основном я устанавливаю grunt.option в цикле, и следующие задачи используют эту опцию в своей конфигурации. Проблема заключается в том, что ворчание, кажется, бежит вещи совсем не по порядку, так что «вариант» устанавливается на последнее значение в цикле, прежде чем следующая задача выполняется:Grunt synchronous task

var skins = ['daylight','twilight']; 
grunt.registerTask('skins', function(){ 
    grunt.util.recurse(skins, function(val){ 
    grunt.option('skin', val); // This runs twice first 
    grunt.task.run(['replace:styles','sass:dist']); // ... before this 
    }) 
}); 

В основном опция получает значение последнего массив val перед запуском первой задачи. Любые советы оценили, чтобы этот запуск выполнялся последовательно ...

+0

Благодаря @drorb за указание, почему это не работает. Из-за моего небольшого недостатка опыта с grunt/node я в конечном итоге решил это с помощью простого простого сценария bash в терминале, который просто обрабатывает несколько задач grunt, чтобы: '' 'alias skins = 'grunt sassy - skin = daylight && grunt sassy --skin = twilight'''' – suncat100

ответ

1

grunt.task.run Задает задачу (задачи) запускаться сразу же после завершения текущей задачи. Это означает, что 'replace:styles' и 'sass:dist' будут выполняться после завершения задачи 'skins', и на этом этапе опция 'skin' установлена ​​в последнее значение в списке.