使用Gulp进行更改后,browser-sync不会刷新页面

rai*_*chu 22 sass gulp browser-sync

我是Gulp的新手,我想利用它的自动scss编译和浏览器同步.但我无法让它发挥作用.

我删除了所有内容,只在Browsersync网站上留下了示例的内容:

http://www.browsersync.io/docs/gulp/#gulp-sass-css

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

// Static Server + watching scss/html files
gulp.task('serve', ['sass'], function() {

    browserSync.init({
        server: "./app"
    });

    gulp.watch("app/scss/*.scss", ['sass']);
    gulp.watch("app/*.html").on('change', browserSync.reload);
});

// Compile sass into CSS & auto-inject into browsers
gulp.task('sass', function() {
    return gulp.src("app/scss/*.scss")
        .pipe(sass())
        .pipe(gulp.dest("app/css"))
        .pipe(browserSync.stream());
});

gulp.task('default', ['serve']);
Run Code Online (Sandbox Code Playgroud)

我可以打电话给gulp发球.该网站正在显示,我收到了来自Browsersync的消息.当我修改HTML时,页面被重新加载.然而,当我修改scss时,我可以看到:

[BS] 1 file changed (test.css)
[15:59:13] Finished 'sass' after 18 ms
Run Code Online (Sandbox Code Playgroud)

但我必须手动重装.我错过了什么?

SU1*_*U15 38

当我不熟悉浏览器同步使用时,我也面临类似的问题,命令行说"重新加载浏览器"但浏览器根本没有刷新,问题是我没有在我的HTML页面中包含body标签browser-sync可以为其功能注入脚本,确保您的HTML页面具有正文标记.

  • 我遇到了完全相同的问题!省略了正文标签以进行快速测试,然后无法弄清楚为什么浏览器同步停止工作......非常感谢!!! (3认同)
  • 谢谢你救了我几天的挫折.坦率地说,这与Gulp无关,所以可能应该得到自己的问题/答案,因为我知道我不是唯一一个以懒惰的方式首次使用简单的无标记`index.html`文件测试它的人并且想知道.. .为什么这不起作用? (2认同)
  • 这个简单的概念是我在阅读 BrowserSync 时一定错过的东西。感谢您的发布,刚刚结束了 2 小时的沮丧。 (2认同)
  • 如果您确实不想在我的 HTML 中使用“</body>”标记,则可以使用 [`snippetOptions`](https://browsersync.io/docs/options/#option-snippetOptions) 选项将 BrowserSync 脚本注入 HTML 文件的另一个位置。 (2认同)

Dan*_*ble 16

您可以注入更改,而不必在SASS编译时强制完全浏览器刷新,如果您愿意.

browserSync.init({
    injectChanges: true,
    server: "./app"
});

gulp.task('sass', function() {
    return gulp.src("app/scss/*.scss")
        .pipe(sass())
        .pipe(gulp.dest("app/css"))
        .pipe(browserSync.stream({match: '**/*.css'}));
});
Run Code Online (Sandbox Code Playgroud)


Fel*_*ner 11

这是因为你正在调用browserSync.reloadhtml手表而不是scss手表.

试试这个:

gulp.watch("app/scss/*.scss", ['sass']).on('change', browserSync.reload);
gulp.watch("app/*.html").on('change', browserSync.reload);
Run Code Online (Sandbox Code Playgroud)


Sim*_*yJS 6

这是我使用的,它在sass或任何其他文件中工作正常

gulp.task('browser-sync', function () {
   var files = [
      '*.html',
      'css/**/*.css',
      'js/**/*.js',
      'sass/**/*.scss'
   ];

   browserSync.init(files, {
      server: {
         baseDir: './'
      }
   });
});
Run Code Online (Sandbox Code Playgroud)