2

我有这段代码可以通过任何更改重新加载浏览器:

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

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

});

我在这里通过 html.js 触发 browserSync:

var gulp        = require('gulp');
var browserSync = require('browser-sync');
var fileinclude = require('gulp-file-include');
var rename      = require('gulp-rename');
var util        = require('gulp-util');

gulp.task('html', function() {

    var filename = 'middle.html';

    return gulp.src(filename)
        .pipe(fileinclude())
        .pipe(rename('index.html'))
        .pipe(gulp.dest('./'))
        .pipe(browserSync.reload({stream:true}));
});

出于某种原因,html.js 似乎可以工作(文件包含、重命名等......已完成)但 browserSync 没有。我没有收到任何错误消息,但浏览器不会自动重新加载。有任何想法吗?

谢谢!

4

2 回答 2

3

以下技术对我有用。

对于自动重新加载

  • html你应该使用browserSync.reload
  • 对于CSS使用browserSync.stream()

var gulp = require('gulp');
var sass = require('gulp-sass');
var watch = require('gulp-watch');

var browserSync = require('browser-sync').create(); // for live-editing

gulp.task('default', function(){

	// Serve files from the root of this project
	browserSync.init({
	    	server: "./"
	});
	
	gulp.watch('sass/**/*.scss', ['styles']);

	//-----*****   RELOADING of HTML   *****-----
	gulp.watch("*.html").on("change", browserSync.reload);
	
});


gulp.task('styles', function(){

	gulp.src('sass/**/*.scss')
	
	.pipe(sass().on('error', sass.logError))     	
 
 	.pipe( gulp.dest('./css'))

	//-----*****   RELOADING of CSS   *****-----
	.pipe(browserSync.stream());	
});

于 2016-03-08T11:24:30.033 回答
0

所以,我不是 100% 确定这是否是问题所在,但试试这个。将 browser-sync 任务添加到 watch 任务中,以加载配置。

var gulp = require('gulp');
gulp.task('watch', ['browser-sync'], function() { // Add your browser-sync task to the watch task
    gulp.watch([ 'html/*' ], ['html']);
    gulp.watch([ '.html' ], ['html']);
    gulp.watch([ 'js/' ], ['html']);
    gulp.watch([ 'css/*' ], ['html']);
    gulp.watch([ 'css/*', ], ['sass']);
});

然后修改您的浏览器同步配置以将 css 更改注入浏览器:

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

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

});

让我知道事情的后续。

于 2015-01-15T10:26:57.507 回答