Перегрузка Browsersync в цикле с задачей nunjucks

В течение некоторого времени у меня были проблемы с Browsersync. У меня есть веб-интерфейс рабочего процесса с Gulp, Browsersync, SASS и Nunjucks. Глоток компилирует мои файлы Nunjucks. В конце этой задачи браузер перезагружается с помощью Browsersync. За несколько дней браузер перезагружал браузер только один раз. Теперь он перезагружает браузер столько раз, сколько файлов nunjucks.

  • Browsersync [2.13.0]
  • Узел [6.9.1]
  • Npm [4.0.2]
  • окна
  • Глоток

    gulp.task('njk', function () {
        return gulp.src(templatesInput)
            .pipe(nunjucksRender({
                path: templatesFolder,
                ext:  '.html'
            }))
            .pipe(gulp.dest(templatesOutput))
            .pipe(browserSync.stream());
    });
    
    gulp.task('serve', function () {
        browserSync.init({
            server: {
                baseDir: render
            }
        });
    
    
        // Watch Sass
        gulp.watch(scssInput, ['css']).on('change', function (event) {
            console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
        });
    
        // Watch nunjuck
        gulp.watch(templatesInput, ['njk']).on('change', function (event) {
            console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
        });
    });
    
    gulp.task('default', ['serve', 'css', 'njk']);
    

Я указываю, что мои файлы находятся в папках и подпапках.

var templatesFolder = siteSources + 'templates/';
var templatesInput = templatesFolder + '**/*.njk';

Я сделал тест снова. Я добавил задачу, которая запускает задачу njk после ее завершения.

gulp.task('njk-watch', ['njk'], function (done) {
        browserSync.reload();
    done();
});

И я называю эту задачу в моем наблюдателе. Но не работает, перезагрузка это не сделано. Странно, потому что это рекомендуемый метод в документе https://browsersync.io/docs/gulp

Если я уберу 'return' в моей основной задаче 'njk'. В этом случае больше нет многократной перезагрузки. Но перезагрузка до конца задачи njk.

gulp.task('njk', function () {
    gulp.src(templatesInput)
        .pipe(nunjucksRender({
        ....

На данный момент единственный способ состоит в том, чтобы удалить return из 'njk task' и добавить setTimeout, но я думаю, что есть лучший метод.

gulp.task('njk', function () {
    gulp.src(templatesInput)
        .pipe(nunjucksRender({
            path: templatesFolder,
            ext:  '.html'
        }))
        .pipe(gulp.dest(templatesOutput));
});

// Reload browser after 2.5s
gulp.task('njk-watch', ['njk'], function (done) {
    setTimeout(function() {
        browserSync.reload();
    }, 2500);
    done();
});

Большое спасибо за вашу помощь.

0 ответов

Другие вопросы по тегам