Как передать callback в gulp task?
Посмотри статью frontender.info/handling-sync-tasks-with-gulp-js
Ваш вариант не самый плохой, только нужно использовать returnreturn gulp.src('path')
   .pipe().....
Когда захотите организовать последовательное выполнение тасков, это необходимо, иначе все таски запустятся одновременно.
Как вариант распределить файлы по блокам и компилировать только выходную страницу, где эти блоки собираются. Но если страниц несколько то и сообщений тоже будет несколько.
как пример файловой структуры:jade
├ common/
    ├ header.jade
    └ footer.jade
├ layouts/
     └ layout.jade
├ index.jade
├ page2.jade
└ page3.jade
тогда path = "jade/*.jade" без подпапок