Перегрузка 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();
});
Большое спасибо за вашу помощь.