【问题标题】:Using browser-sync to Reload Page on CSS changes使用 browser-sync 在 CSS 更改时重新加载页面
【发布时间】:2015-01-02 16:24:56
【问题描述】:

我在一个项目中使用Basscss,并尝试研究如何在 Gulp 中设置一个任务,当我对我的 .scss 文件进行更改时,该任务将刷新我的浏览器。

当前的gulpfile.js looks like this 和我正在考虑使用Browser Sync 来执行此操作。除了我不确定如何实现这一点,因为这个框架使用 Swig 模板。

我正在考虑做这样的事情,但这似乎不起作用。

var browserSync = require('browser-sync');

gulp.task('bs-reload', function () {
    browserSync.reload();
});

gulp.task('watch-css', ['basswork', 'site-basswork', 'customizer-data'], function() {
  gulp.watch([
    './src/**/*.css',
    './docs/src/css/**/*.css'],
    ['basswork', 'site-basswork', 'customizer-data', 'bs-reload']);
});

如果有人能就此向我提供任何帮助,我将不胜感激。

提前致谢!

【问题讨论】:

    标签: html css gulp browser-sync


    【解决方案1】:

    最终像这样解决它:

    var browserSync = require('browser-sync');
    var reload = browserSync.reload;
    
    gulp.task('browser-sync', function(){
      browserSync({
        server: {
          baseDir: "./"
        }
      });
    });
    
    gulp.task('sass', function() {
      gulp.src(['./scss/*.scss'])
      .pipe(sass({
        outputStyle: 'expanded'
      }))
      .pipe(gulp.dest('./css'))
      .pipe(minifycss())
      .pipe(gulp.dest('./css'))
      .pipe(reload({stream: true}));
    });
    

    现在,每次我对 .scss 文件进行更改时,浏览器都会使用更新后的 CSS 进行刷新。希望这对某人有所帮助。

    【讨论】:

      【解决方案2】:

      你在哪里启动服务器?您是否尝试关注official docs

      你必须设置类似这样的任务:

      gulp.task('browser-sync', function() {
          browserSync({
              server: {
                  baseDir: "./"
              }
          });
      });
      

      您不需要任务来重新加载浏览器同步,每次调用此任务时,如果它没有运行,它将创建服务器,或者同步/重新加载文件。

      在 watch 中,您只需将 browser-sync 任务添加到被调用任务的数组中,类似于您现在正在执行的操作:

      gulp.task('watch-css', ['basswork', 'site-basswork', 'customizer-data'], function () {
          gulp.watch([
              './src/**/*.css',
              './docs/src/css/**/*.css'
          ], ['basswork', 'site-basswork', 'customizer-data', 'browser-sync']);
      });
      

      【讨论】:

      • 我对此有点困惑,因为它看起来像是在第 31 行启动了一个服务器。这些服务器不会冲突吗?
      • 第 31 行?什么意思?
      • 我在问题中链接了当前的 gulpfile (github.com/jxnblk/basscss/blob/master/gulpfile.js)。第 31 行有一个名为 serve 的任务。
      • 你为什么要创建 gulp-webserver?浏览器同步将为您创建一个服务器。
      • tasks/serve.js:6 正在从./(当前文件夹)创建一个服务器,相对于 gulpfile.js。 AFAIK 你必须预编译任何模板,你可以使用gulp-swig 来自动化这个。编译文件后,任何静态服务器(gulp-webserver、connect、livereload、browser-sync 等)都将工作,您提供服务器根目录,它将路径从浏览器转换到服务器根目录并返回相应的文件。
      猜你喜欢
      • 2020-06-22
      • 2019-01-19
      • 2016-03-05
      • 2016-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-29
      • 1970-01-01
      相关资源
      最近更新 更多