使用Google Chrome DevToolscss
工做区Browsersynchtml
BrowserSync是基于Node.js的, 是一个Node模块, 若是您想要快速使用它,也许您须要先安装一下Node.js 安装适用于Mac OS,Windows和Linux。npm
npm install --save-dev browser-sync
一个基本用途是,若是您只但愿在对某个css文件进行修改后会同步到浏览器里。那么您只须要运行命令行工具,进入到该项目(目录)下,并运行相应的命令:静态网站
若是您想要监听.css文件, 您须要使用服务器模式。 BrowserSync 将启动一个小型服务器,并提供一个URL来查看您的网站。json
// --files 路径是相对于运行该命令的项目(目录)gulp
browser-sync start --server --files "css/*.css"
若是您须要监听多个类型的文件,您只须要用逗号隔开。例如咱们再加入一个.html文件浏览器
// --files 路径是相对于运行该命令的项目(目录)
browser-sync start --server --files "css/.css, .html"// 若是你的文件层级比较深,您能够考虑使用 **(表示任意目录)匹配,任意目录下任意.css 或 .html文件。
browser-sync start --server --files "/.css, /.html"sass
// 监听css文件
browser-sync start --server --files "css/*.css"// 监听css和html文件
browser-sync start --server --files "css/.css, .html"动态网站
若是您已经有其余本地服务器环境PHP或相似的,您须要使用代理模式。 BrowserSync将经过代理URL(localhost:3000)来查看您的网站。ruby
// 主机名能够是ip或域名
browser-sync start --proxy "主机名" "css/*.css"
在本地建立了一个PHP服务器环境,并经过绑定Browsersync.cn来访问本地服务器,使用如下命令方式,Browsersync将提供一个新的地址localhost:3000来访问Browsersync.cn,并监听其css目录下的全部css文件。
browser-sync start --proxy "Browsersync.cn" "css/*.css"服务器
Browsersync + Gulp.js
当您在使用gulp构建您的项目时,您只须要 require Browsersync 模块, 利用API 并进行 选项配置。 如下是一些流行项目中常见的用例, 如 谷歌的网络入门套件 和其余项目。安装^ TOP
首先,您须要安装 Browsersync 和 依赖包 Gulp 。若是你是第一次安装,那么你能够经过--save-dev命令,这将会自动在你的package.json里添加依赖,下一次再安装时,你只须要npm install
$ npm install browser-sync gulp --save-dev
而后,在您的 gulpfile.js 文件里使用它们。网络
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
// 静态服务器
gulp.task('browser-sync', function() {
browserSync.init({
server: {
baseDir: "./"
}
});
});
// 代理
gulp.task('browser-sync', function() {
browserSync.init({
proxy: "你的域名或IP"
});
});SASS + CSS 注入^ TOP
经过流的方式建立任务流程, 这样您就能够在您的任务完成后调用reload,全部的浏览器将被告知的变化并实时更新. 由于Browsersync只在意您的CSS在编译完成 finished 后 - 注意: gulp.dest 后调用重载。
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var sass = require('gulp-sass');
var reload = browserSync.reload;
// 静态服务器 + 监听 scss/html 文件
gulp.task('serve', ['sass'], function() {
browserSync.init({
server: "./app"
});
gulp.watch("app/scss/*.scss", ['sass']);
gulp.watch("app/*.html").on('change', reload);
});
// scss编译后的css将注入到浏览器里实现更新
gulp.task('sass', function() {
return gulp.src("app/scss/*.scss")
.pipe(sass())
.pipe(gulp.dest("app/css"))
.pipe(reload({stream: true}));
});
gulp.task('default', ['serve']);SASS & Source Maps^ TOP
若是您使用 gulp-ruby-sass 与 sourcemap: true 选项, 将会生成.map 文件. 这些文件最终会被送到下游,在 browserSync.reload() 时接收它们, 它会尝试从新加载页面 (由于它不会在DOM里发如今任何 .map 文件)。
要解决这个问题, 您可使用 gulp-filter 包, 以确保只有 *.css 文件响应 .reload - 这样一来,您仍是会获得CSS注入,而不是整个页面重载。
var gulp = require("gulp");
var sass = require("gulp-ruby-sass");
var filter = require('gulp-filter');
var browserSync = require("browser-sync").create();
// 静态服务器 + 监听 scss/html 文件
gulp.task('serve', ['sass'], function() {
browserSync.init({
server: "./app"
});
gulp.watch("app/scss/*.scss", ['sass']);
gulp.watch("app/*.html").on('change', reload);
});
gulp.task('sass', function () {
return gulp.src('scss/*/.scss')
.pipe(sass({sourcemap: true}))
.pipe(gulp.dest('css'))// Write the CSS & Source maps
.pipe(filter('*/.css')) // Filtering stream to only css files
.pipe(browserSync.reload({stream:true}));
});浏览器重载^ TOP
有时候,您可能只是想彻底从新加载页面 (例如,处理一堆JS文件后), 但您但愿在任务发生后重载。这将在 gulp 4.x.x 时变得更容易, 但如今您能够作到如下几点: (确保您 return 从您的工做流 ,以确保 browserSync.reload() 被调用在正确的时间。
// 处理完JS文件后返回流
gulp.task('js', function () {
return gulp.src('js/*js')
.pipe(browserify())
.pipe(uglify())
.pipe(gulp.dest('dist/js'));
});
// 建立一个任务确保JS任务完成以前可以继续响应// 浏览器重载
gulp.task('js-watch', ['js'], browserSync.reload);
// 使用默认任务启动Browsersync,监听JS文件
gulp.task('serve', ['js'], function () {
// 从这个项目的根目录启动服务器
browserSync({
server: {
baseDir: "./"
}
});
// 添加 browserSync.reload 到任务队列里
// 全部的浏览器重载后任务完成。
gulp.watch("js/*.js", ['js-watch']);
});手动重载^ TOP
若是流支持并不知足您的需求,您能够经过建立一个任务来手动触发重载方法。咱们建立了一个sass任务,在咱们修改文件后会在浏览器里注入CSS,可是当HTML文件被更改时,浏览器将会被从新加载(手动重载)。
// 使用变量引用 reload
方法var reload = browserSync.reload;
// 编译 SASS & 自动注入到浏览器
gulp.task('sass', function () {
return gulp.src('scss/styles.scss')
.pipe(sass({includePaths: ['scss']}))
.pipe(gulp.dest('css'))
.pipe(reload({stream:true}));
});
// 监听scss和html文件, 当文件发生变化后作些什么!
gulp.task('serve', ['sass'], function () {
// 从这个项目的根目录启动服务器
browserSync({
server: {
baseDir: "./"
}
});
gulp.watch("scss/*.scss", ['sass']);gulp.watch("*.html").on("change", browserSync.reload);});