javascript - 观看 .html 文件时 BrowserSync 不会触发

标签 javascript node.js gulp browser-sync gulp-watch

我正在使用 Gulp 来编译和缩小我的 SASS。这工作正常,但我想通过使用 BrowserSync 来扩展自动化。

我已按照一些教程网站上的说明进行操作,但无法使其正常工作 - 当我更新 .scss 或 .html 文件时,浏览器不会刷新,终端上也不会出现任何错误。

我的 gulpfile.js 就是这样。有人知道为什么 browserSync 无法运行吗?

(ps运行gulp browserSync确实成功使用http://localhost:3000/打开浏览器窗口和索引文件,但没有自动刷新)。

const gulp = require('gulp');
const sass = require('gulp-sass');
const cssnano = require('gulp-cssnano');
const browserSync = require('browser-sync').create();

// Normal .scss compilation
gulp.task('sass', function(){
  return gulp.src('scss/main.scss')
    .pipe(sass())
    .pipe(gulp.dest('dist/css'))
});

// Minifys .css, is meant to reload browser
gulp.task('mini-css', function() {
    return gulp.src('dist/css/main.css')
    .pipe(cssnano())
    .pipe(gulp.dest('dist/css'))
    .pipe(browserSync.reload({
      stream: true
    }));
});

// Do both of the above
gulp.task('do-sass', gulp.series('sass', 'mini-css'))

gulp.task('watch', function(){
  gulp.watch('scss/**/*.scss', gulp.series('do-sass'));
  gulp.watch("*.html").on('change', browserSync.reload);
});

gulp.task('browserSync', function() {
  browserSync.init({
    server: {
      baseDir: './'
    },
  })
})

最佳答案

您的监视任务应该是您的默认任务。尝试将 browserSync.init() 放入监视任务中,然后使用 gulp watch

启动 gulp
const gulp = require('gulp');
const sass = require('gulp-sass');
const cssnano = require('gulp-cssnano');
const browserSync = require('browser-sync').create();

// Normal .scss compilation
gulp.task('sass', function(){
  return gulp.src('scss/main.scss')
    .pipe(sass())
    .pipe(gulp.dest('dist/css'))
});

// Minifys .css, is meant to reload browser
gulp.task('mini-css', function() {
    return gulp.src('dist/css/main.css')
    .pipe(cssnano())
    .pipe(gulp.dest('dist/css'))
    .pipe(browserSync.reload({
      stream: true
    }));
});

// Do both of the above
gulp.task('do-sass', gulp.series('sass', 'mini-css'))

gulp.task('watch', function(){
  browserSync.init({
    server: {
      baseDir: './'
    }
  });

  gulp.watch('scss/**/*.scss', gulp.series('do-sass'));
  gulp.watch("*.html").on('change', browserSync.reload);
});

关于javascript - 观看 .html 文件时 BrowserSync 不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54836863/

相关文章:

javascript - 如何提高webpack性能?

HTTP 2 协议(protocol)对 Web 开发的影响?

javascript - 如何使用 gulp 在 javascript 文件中注入(inject)注释

javascript - 如何将该 anchor 的 Id 作为函数参数发送?

javascript - jquery 从输入中获取值

javascript - 如何将 props 传递给 Material-ui 风格的组件?

javascript - 如何在 Javascript 中将 CSS 选择器转换为 XPath?

带有 document.querySelectorAll 和 filter() 的 javascript 函数无法正常工作

javascript - 在每个循环中只有数组中的最后一个元素被连接起来

javascript - 平均应用程序。两台服务器同时使用Express、NodeJS、Angular 2