delch
@delch
Frontend developer

Как передать callback в gulp task?

Суть в чем. Есть gulp task jade, которому передается путь расположения view файлов, и дальше таск уже каждый файл конвертирует в html. Проблема в том, что на каждый файл он делает перезагрузку livereload и для каждого файла делает notification.

gulp.task 'jade', ->
  gulp.src paths.views
    .pipe plumber errorHandler: notify.onError "Error: <%= error.message %>"
    .pipe jade
      pretty: true
    .pipe gulp.dest paths.app
    .pipe connect.reload()
    .pipe notify
      message: "jade task complete"
      open: "http://localhost:#{config.port}"


Выглядит это всё так:
2828f126756e47fba02dfffa866312fc.png

upd.
Пока перебился таким решением:
gulp.task 'jade', ['jade-compile'], ->
  gulp
    .src paths.app
    .pipe connect.reload()
    .pipe notify
      message: "jade task complete"
      open: "http://localhost:#{config.port}"

# Сам процесс сборки
gulp.task 'jade-compile', ->
  gulp.src paths.jade.views
    .pipe plumber errorHandler: notify.onError "Error: <%= error.message %>"
    .pipe jade
      pretty: true
    .pipe gulp.dest paths.app

Не самое элегантное, но рабочее.
  • Вопрос задан
  • 980 просмотров
Пригласить эксперта
Ответы на вопрос 2
kudesa
@kudesa
Проектирую и верстаю адаптивные сайты
Посмотри статью frontender.info/handling-sync-tasks-with-gulp-js
Ответ написан
Комментировать
@ROBsoer
Ваш вариант не самый плохой, только нужно использовать return
return gulp.src('path')
   .pipe().....

Когда захотите организовать последовательное выполнение тасков, это необходимо, иначе все таски запустятся одновременно.

Как вариант распределить файлы по блокам и компилировать только выходную страницу, где эти блоки собираются. Но если страниц несколько то и сообщений тоже будет несколько.
как пример файловой структуры:
jade
├ common/
    ├ header.jade
    └ footer.jade
├ layouts/
     └ layout.jade
├ index.jade
├ page2.jade
└ page3.jade

тогда path = "jade/*.jade" без подпапок
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы