2014-12-30 2 views
3

У меня есть Глоток сборка задача, которая состоит из других задач сборки подобных этому:Задачи Gulp из других задач Gulp?

gulp.task('build', ['build-html', 'build-css', 'build-js', 'build-images']); 

То, что я ненавижу это, что build задача не не работает до тех пор, после того, как зависимости закончены:

Starting 'build-html'... 
Finished 'build-html' after 1 s 
Starting 'build-css'... 
Finished 'build-css' after 1 s 
Starting 'build-js'... 
Finished 'build-js' after 1 s 
Starting 'build-images'... 
Finished 'build-images' after 1 s 
Starting 'build'... 
Finished 'build' after 1 ms 

Теперь очевидно, что build не должен запускаться вообще до тех пор, пока его зависимости не будут закончены, поэтому он работает должным образом. Но это приводит к тому, что консоль говорит, что build занимает всего 1 мс, когда на самом деле он должен сказать, что потребовалось 4 секунды, так как все его зависимости заняли так много времени. Было бы хорошо, если бы это выглядело примерно так:

Starting 'build'... 
Starting 'build-html'... 
Finished 'build-html' after 1 s 
Starting 'build-css'... 
Finished 'build-css' after 1 s 
Starting 'build-js'... 
Finished 'build-js' after 1 s 
Starting 'build-images'... 
Finished 'build-images' after 1 s 
Finished 'build' after 4 s 

Обратите внимание, как build является первой вещью, которая «начинается», то все зависимости бежать, а затем build заканчивается.

Итак, что мне интересно, вместо использования зависимостей задач, могу ли я просто вызвать каждую задачу по одному из заданий build? Если да, какую команду я использую для этого?

Это плохая идея? Есть ли лучшее решение этой проблемы?

+0

Есть ли причина, вы должны быть в состоянии напечатать общее время все задачи сборки таким образом? – lukewestby

+0

Мне просто интересно, как долго общее время сборки. Вышеприведенный пример значительно упрощен. На самом деле, некоторые задачи сборки занимают намного больше времени, когда они связаны с загрузкой файлов на удаленные серверы, взаимодействиями с источником, оптимизацией сотен изображений и т. Д. –

+0

На самом деле вы не запускаете 'build', сначала вы запускаете его после все задания. Вы просто хотите знать, сколько задач выполнялось для выполнения dist, или вам нужно последовательно выполнять задачи? Редактировать: (Я прочитал ваш комментарий раньше) – Rigotti

ответ

1

Я думаю, вы могли бы использовать плагин runSequence, чтобы делать то, что хотите.

С единственной целью вашей build задачи является запуском всех build-* задач без конкретного порядка, это может выглядеть следующим образом:

var rs = require('run-sequence'); 

gulp.task('build', function (cb) { 
    rs(['build-css', 'build-html', 'build-js', 'build-images'], cb); 
}); 
Смежные вопросы