Gulp 编译为html的pug文件不支持livereload
在我的项目文件夹中,有一些pug文件位于Gulp 编译为html的pug文件不支持livereload,gulp,pug,gulp-watch,browser-sync,Gulp,Pug,Gulp Watch,Browser Sync,在我的项目文件夹中,有一些pug文件位于src/pug/*.pug,其中一个文件是index.pug。编译为html时,编译的文件位于build/templates/*.html中。在service任务中,在browsersync.init()中,我将baseDir从/更改为build/templates/,因为编译的index.html位于那里。问题是,browsersync livereload不起作用;我必须刷新浏览器才能看到我在index.pug中所做的更改 Gulpfile.js co
src/pug/*.pug
,其中一个文件是index.pug
。编译为html时,编译的文件位于build/templates/*.html
中。在service
任务中,在browsersync.init()
中,我将baseDir
从/
更改为build/templates/
,因为编译的index.html
位于那里。问题是,browsersync livereload不起作用;我必须刷新浏览器才能看到我在index.pug
中所做的更改
Gulpfile.js
const gulp = require('gulp'),
sass = require('gulp-sass'),
pug = require('gulp-pug'),
uglify = require('gulp-uglify'),
plumber = require('gulp-plumber'),
imagemin = require('gulp-imagemin'),
concat = require('gulp-concat'),
autoprefixer = require('gulp-autoprefixer'),
browserSync = require('browser-sync');
gulp.task('templates', () => {
return gulp.src('src/pug/*.pug')
.pipe(plumber())
.pipe(pug({pretty: true}))
.pipe(gulp.dest('build/templates/'))
.pipe(browserSync.stream({stream: true}));
});
gulp.task('styles', () => {
return gulp.src('src/sass/**/*.sass')
.pipe(plumber())
.pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
.pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4'))
.pipe(gulp.dest('build/css/all/'))
.pipe(concat('style.css'))
.pipe(gulp.dest('build/css/'))
.pipe(browserSync.stream({stream: true}));
});
gulp.task('scripts', () => {
return gulp.src('src/js/*.js')
.pipe(plumber())
.pipe(concat('script.js'))
.pipe(gulp.dest('build/js/'))
.pipe(browserSync.stream({stream: true}));
});
gulp.task('imagemin', () => {
gulp.src('assets/img/src/**/*')
.pipe(imagemin())
.pipe(gulp.dest('assets/img/dist/'));
});
gulp.task('serve', ['templates', 'styles', 'scripts'], () => {
browserSync.init({
server: {
baseDir: 'build/templates/'
},
notify: false
});
gulp.watch('src/pug/*.pug', ['templates']);
gulp.watch('src/sass/**/*.sass', ['styles']);
gulp.watch('src/js/*.js', ['scripts']);
gulp.watch('build/templates/index.html').on('change', browserSync.reload);
});
gulp.task('default', ['imagemin', 'serve']);
有人能帮我解决这个问题吗?不知道为什么这样做不起作用,但我将您的构建文件与官方文档进行了比较,我发现:它没有查看HTML文件,而是查看源代码(您的例子中的哈巴狗文件),并在源代码编译任务完成后调用
browserSync.reload
。在您的情况下,帕格线将被以下内容取代:
gulp.watch('src/pug/*.pug', ['templates-watch']);
您将创建一个新任务,名为templates watch
,其定义如下:
gulp.task('templates-watch', ['templates'], function (done) {
browserSync.reload();
done();
});