【问题标题】:Browsersync not syncing scrollBrowsersync 不同步滚动
【发布时间】:2015-01-04 14:11:26
【问题描述】:

我是 gulp 的新手,我正在尝试让浏览器同步工作。除了同步滚动不起作用之外,它似乎工作正常。谁能看看我的设置有什么问题。

var gulp = require('gulp'),
    jade = require('gulp-jade'),
    uglify = require('gulp-uglify'),
    gutil = require('gulp-util'),
    sass = require('gulp-sass'),
    livereload = require('gulp-livereload'),
    browserSync = require('browser-sync');

var outputDir = "builds/development";

gulp.task('jade', function() {
    return  gulp.src('src/templates/**/*.jade')
        .pipe(jade())
        .pipe(gulp.dest(outputDir))
        .pipe(livereload());
});

// Js - to uglify use gulp js --type production ( or just leave out js to build everything )
gulp.task('js', function() {
    return gulp.src('src/js/main.js')
        .pipe(gutil.env.type === 'production' ? uglify() : gutil.noop())
        .pipe(gulp.dest(outputDir + '/js'))
        .pipe(livereload());
});

// Sass - to compress use gulp sass --type production ( or just leave out sass to build everything )
gulp.task('sass', function() {
    var config = {};
    if ( gutil.env.type === 'production') {
        config.outputStyle = 'compressed';
    }
    return gulp.src('src/sass/main.scss')
        .pipe(sass(config))
        .pipe(gulp.dest(outputDir + '/css'))
        .pipe(livereload());
});

// Browser Sync ( not working 100% ... not scrolling )
gulp.task('browser-sync', function() {
    browserSync({
        proxy: "http://localsandbox.dev/gulptutorial/builds/development/"
    });
});




// Watch
gulp.task('watch', function() {
    gulp.watch('src/templates/**/*.jade', ['jade']);
    gulp.watch('src/js/**/*.js', ['js']);
    gulp.watch('src/sass/**/*.scss', ['sass']);
});


gulp.task('default', ['jade', 'js', 'sass', 'watch', 'browser-sync'], function () {
    gulp.watch("js/*.js", ['js', browserSync.reload]);
});

【问题讨论】:

  • 加载浏览器同步页面后,您的浏览器控制台中是否有任何 (socket.io) 错误?另外,我认为您不需要将 livereload 与 browserSync 结合使用(不确定这是否会导致问题)。使用 browserSync.reload 代替,如下所述:browsersync.io/docs/gulp

标签: javascript development-environment gulp livereload


【解决方案1】:

您的问题可能与同时使用 Gulp 和 BrowserSync 观看有关。这是一个很好的参考:

“您不应该使用 BrowserSync + Gulp 观看文件” https://github.com/shakyShane/gulp-browser-sync/issues/16#issuecomment-43597240

因此,您可能希望删除 livereload(让 BrowserSync 处理所有事情)并将您的默认 Gulp 任务更改为如下内容:

gulp.task('default', ['jade', 'js', 'sass', 'browser-sync'], function () {
    gulp.watch('src/templates/**/*.jade', ['jade', browserSync.reload]);
    gulp.watch('src/js/**/*.js', ['js', browserSync.reload]);
    gulp.watch('src/sass/**/*.scss', ['sass', browserSync.reload]);
});

您也可以尝试显式设置滚动(但无论如何它默认为 true):

gulp.task('browser-sync', function() {
    browserSync({
        proxy: "http://localsandbox.dev/gulptutorial/builds/development/"
        ghostMode: {
          scroll: true
        }
    });
});

【讨论】:

  • 因为你是对的,我不应该两次实时重新加载,但我认为我有多个问题。我在构建/开发文件夹... gulptutorial/builds/development/ 中的索引文件并在proxy: 中指定位置是一个问题。我将一个 html 文件放在与 gulpfile 相同的目录中,并将代理设置为http://localsandbox.dev/gulptutorial/,它工作正常,不知道为什么......我迟到了最后期限,所以现在没有时间调查......也许你知道并且会想发表评论......无论如何感谢它现在工作
【解决方案2】:

我遇到了同样的问题,那是因为我在自己的代码中声明了一个名为 scrollTo 的 javascript 函数,它干扰了 browserSync 代码。我需要做的就是重命名该函数,并且浏览器同步滚动再次起作用。

【讨论】:

  • 请添加代码 sn-ps 演示并充分解释问题的原因以及您的解决方案如何解决它,最好是外部文档的链接和引用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-31
  • 2012-05-06
相关资源
最近更新 更多