В настоящее время я пытаюсь создать задачу в параметрах отправки grunt для запуска другой задачи несколько раз.Grunt for-loop on grunt.task.run с переменными
Вот моя уже функциональная Одинарна задача:
var country = grunt.option('country') || 'X0';
var product = grunt.option('product') || 'Y0';
var subdomain = grunt.option('subdomain') || 'Z0';
grunt.registerTask('build_home', [
'sprite:publicProduct',
'sprite:home',
'uglify:home',
'sass:home',
'csscomb:home',
'cssmin:home'
]);
Таким образом, в мой день в день, я бы запустить команду:
grunt build_home --country=X0 --product=Y7 --subdomain=Z3
То, что я хочу сейчас, это задача, которая будет выполнять все мои возможные предопределенные варианты:
grunt build_home_all
было бы что-то вроде этого:
grunt.registerTask('build_home_all', function() {
var products = ['Y0','Y1','Y2','Y3','Y4','Y5','Y6','Y7','Y8','Y9'];
var subdomains = ['Z0','Z1','Z2'];
for (i = 0; i < products.length; i++) {
for (j = 0; j < subdomains.length; j++) {
grunt.task.run('build_home --product='+products[i]+' --subdomain='+subdomains[j]);
};
};
grunt.log.ok(['Finished.']);
});
Я уже достиг этого с grunt.util.spawn, но это своего рода запущенной асинхронно и заставляла мой процессор со всеми видами задач, запущенных одновременно.
Вместо запуска задач в цикле for, вы должны подталкивать задачи к массиву, который вы генерируете в цикле for, а затем запускаете этот массив. – theaccordance
@ theaccordance Это на самом деле очень полезно и является частью решения, но я все еще не могу запустить что-то вроде 'grunt.task.run ('build_home --country = X0 --product = Y7 --subdomain = Z3')' поскольку он отображает 'Warning: Task 'build_home --country = X0 --product = Y7 --subdomain = Z3" не найден. Использовать --force для продолжения. 'Он просто не определяет параметры. –
Вы хотите посмотреть создание пользовательской задачи в качестве инициализатора для каждого процесса сборки и передачи параметров с помощью 'this.args'. Ваши поставленные задачи будут выглядеть как 'build_home: X0: Y7: Z3'. Ссылка: http://gruntjs.com/api/inside-tasks#this.args – theaccordance