2016-03-21 90 views
0

我是吞咽浏览器同步,与下面的设置。问题在于,当代码更改时,浏览器同步会识别并刷新页面。但是,它不会等待脚本文件在gulp.dest中,因此通常它会自动刷新并且脚本文件无法找到,然后再次刷新,它就在那里。浏览器同步与吞咽之前刷新完成

有没有办法确保它会等待任务完全完成?

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

gulp.task('cleanScripts', function() { 
    return gulp.src('./assets/js', {read: false}) 
      .pipe(clean()); 
}); 

gulp.task('scripts', ['cleanScripts'], function() { 
    return browserify('./client/js/main.js') 
     .bundle() 
     .on('error', function (e) { 
      gutil.log(e); 
     }) 
     .pipe(source('main-' + packageJson.version + '.js')) 
     .pipe(buffer()) 
     .pipe(uglify()) 
     .pipe(gulp.dest('./assets/js')); 
}); 

//Watch our changes 
gulp.task('watch', function() { 
    browserSync.init({ 
    proxy: "localhost:3000" 
    }); 
    gulp.watch(['./client/js/**/*.js', ['scripts']).on('change', browserSync.reload); 
}); 

回答

1

你可以也许尝试简单的方式,否则你将需要也许超时:

gulp.task('watch', function() { 
watch(['./client/js/**/*.js'], function() { 
    gulp.start('scripts'); 
}); 
}); 

并把browserSync.reload在脚本管道末端:

.pipe(browserSync.reload); 

如果不工作,尝试超时并玩时间,但如果您确实需要快速开发和编译,这不是一个合适的解决方案:

gulp.task('watch', function() { 
watch(['./client/js/**/*.js'], function() { 
    gulp.start('scripts'); 
    setTimeout(function(){ 
    browserSync.reload; 
    }, 1000); //1 second 
}); 
}); 

在这种情况下,您不需要在脚本管道末尾重新加载。

0

BrowserSync有权选择reloadDelay可以在gulpfile.js设置

时间,以毫秒为单位,指示浏览器重新加载之前等待/注以下文件更改事件

gulp.task('browserSync', function() { 
    browserSync.init({ 
     server: { 
      baseDir: 'app' 
     }, 
     reloadDelay: 100 
    }); 
});