gulp-pug: компилировать новые только для измененных файлов (в случае с «include» и «extends») - PullRequest
0 голосов
/ 04 мая 2018

Рассмотрим следующую файловую систему:

? мопс

test1.pug

test2.pug

? частичные

part1.pug

С заданием глотка

gulp.task('pug', () => {
  return gulp.src('pug/*.pug')
  .pipe(pug())
  .pipe(gulp.dest('dist'))
});

даже если мы редактируем только test1.pug , оба test1.pug и test2.pug будут скомпилированы. Если изменить задачу на

gulp.task('pug', () => {
  return gulp.src('pug/*.pug', {since: gulp.lastRun('pug')})
  .pipe(pug())
  .pipe(gulp.dest('dist'))
});

, так как второй 'мопс', запущенный gulp-watch , будет изменен или будут пропущены только новые файлы. Однако что, если partial1.pug был включен в test1.pug? (Предположим, что gulp.watch наблюдает за всеми файлами).

test1.pug

doctype html
html
  head
    title Test 1
  body
    h1 Test 1
    include partials/partial1.pug

Если мы отредактируем test1.pug , конечно, он будет скомпилирован. Однако если мы отредактируем part1.pug , test1.pug не будет передан {since: gulp.lastRun('pug')}.

Я не знаю, как решить эту проблему, но, полагаю, нам нужно отфильтровать собранного мопса из файлов или уже скомпилированного html, но перед выводом. Если это возможно ...

Обновление

Может быть, я не объяснил четко желаемый результат. Нам нужно:

  • test1.pug отредактировано → откомпилировано test1.pug * только 1054 *
  • part1.pug отредактировано → откомпилировано test1.pug * только 1060 *
  • test2.pug отредактировано → откомпилировано test2.pug * только 1066 *

Позвольте мне повторить, что part1.pug включает в test1.pug , но не test2.pug .

1 Ответ

0 голосов
/ 04 мая 2018

Зависимости вне шаблона src недоступны на данном этапе для просмотра. Они добавляются позже по трубе (pug()). Для поддержки вашего варианта использования у Gulp должен быть способ собрать зависимости от нижестоящих трансформаторов. На данный момент это выходит за рамки Gulp (это сложное поведение с множеством возможных вариантов дизайна).

Лучшее решение вашей проблемы - вручную обновить шаблон src, чтобы он соответствовал всему вашему дереву зависимостей. В вашем случае это будет pub/**/*.pug. (Wildstar ** позволяет сопоставлять файлы в любом подкаталоге).

Вы также можете взглянуть на реализацию вашего собственного наблюдателя , чтобы получить более точный контроль (я боюсь, что мой шаблон выше может испускать HTML даже для ваших частичных данных).

...