IIIu6ko
@IIIu6ko

Gulp.lastRun и gulp-nunjucks, варианты?

Добрый вечер. Есть страница index.njk и в ней инклюд footer.njk. При изменении footer.njk не обновляется index.njk.
Я понял что проблема в gulp.lastRun, но без него работать с большими проектам не очень комфортно т.к. длительность таска может достигать нескольких секунд.

Обнаружил аналогичную проблема с импортами в SASS, но там для этого написали уже специальный пакет gulp-dependents. Меня интересует, если ли подобный пакет, мб кто-то использует, либо, будет даже лучше, если кто-то знает как решить вопрос без дополнительных пакетов.

ТАСК
function html() {
  return src('src/*.{html,njk}', { base: 'src', since: lastRun('html') })

    .pipe(nunjucks({
      path: 'src',
    }))

    // HTML-валидатор.
    .pipe(htmlhint('.htmlhintrc'))
    .pipe(htmlhint.reporter())

    // Манифест.
    // Если флаг --dist без --norev.
    .pipe(gulpif(dist, gulpif(!norev, revReplace({
      manifest: src('manifest/manifest.json', { allowEmpty: true }),
    }))))

    // Добавляет индентацию для заинклюженных блоков.
    .pipe(gulpif(dist, prettyHtml({
      indent_size: 2,
    })))

    // Выгрузка.
    .pipe(dest(buildHtml))

    // browserSync.
    .pipe(gulpif(!dist, browserSync.stream())); // Если нет флага --dist.
}
  • Вопрос задан
  • 68 просмотров
Решения вопроса 1
IIIu6ko
@IIIu6ko Автор вопроса
Нашёл пакет gulp-nunjucks-inheritance

Таск теперь выглядит вот так
function html() {
  return src('src/**/*.{html,njk}', { base: 'src', since: lastRun('html') })

    // Nunjucks
    .pipe(nunjucksInheritance({ base: 'src' })) // Ищем изменения в зависимостях
    .pipe(nunjucks({ path: 'src' })) // Компилируем в HTML

    // Добавляет индентацию для заинклюженных блоков.
    .pipe(prettyHtml({ indent_size: 2 }))

    // HTML-валидатор.
    .pipe(htmlhint('.htmlhintrc'))
    .pipe(htmlhint.reporter())

    // Манифест.
    // Если флаг --dist без --norev.
    .pipe(gulpif(dist, gulpif(!norev, revReplace({
      manifest: src('manifest/manifest.json', { allowEmpty: true }),
    }))))

    // Выгрузка.
    .pipe(dest(buildHtml))

    // browserSync.
    .pipe(gulpif(!dist, browserSync.stream())); // Если нет флага --dist.
}


Обязательно в src указывайте путь до всех .njk файлов, иначе пакет отказывается работать.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
25 апр. 2024, в 11:02
5000 руб./за проект
25 апр. 2024, в 10:42
150000 руб./за проект
25 апр. 2024, в 10:41
2000 руб./за проект