gulp结合browsersync的使用教程

来源:网络 文章列表 2020-01-20 403
当您在使用gulp构建您的项目时,您只需要 require Browsersync 模块, 利用API 并进行 选项配置。首先,您需要安装 Browsersync 和 依赖包 Gulp 。如果你是第一次安装,那么你可以通过--save-dev命令,这将会自动在你的package.json里添加依赖,

Browsersync + Gulp.js

当您在使用gulp构建您的项目时,您只需要 require Browsersync 模块, 利用API 并进行 选项配置。 以下是一些流行项目中常见的用例, 如 谷歌的网络入门套件 和其他项目。

安装

首先,您需要安装 Browsersync 和 依赖包 Gulp 。如果你是第一次安装,那么你可以通过--save-dev命令,这将会自动在你的package.json里添加依赖,下一次再安装时,你只需要npm install

  1. $ npm install browser-sync gulp --save-dev

然后,在您的 gulpfile.js 文件里使用它们。

  1. var gulp = require('gulp');
  2. var browserSync = require('browser-sync').create();
  3. // 静态服务器
  4. gulp.task('browser-sync', function() {
  5. browserSync.init({
  6. server: {
  7. baseDir: "./"
  8. }
  9. });
  10. });
  11. // 代理
  12. gulp.task('browser-sync', function() {
  13. browserSync.init({
  14. proxy: "你的域名或IP"
  15. });
  16. });

SASS + CSS 注入

通过流的方式创建任务流程, 这样您就可以在您的任务完成后调用reload,所有的浏览器将被告知的变化并实时更新. 因为Browsersync只在乎您的CSS在编译完成 finished 后 - 注意: gulp.dest 后调用重载。

  1. var gulp = require('gulp');
  2. var browserSync = require('browser-sync').create();
  3. var sass = require('gulp-sass');
  4. var reload = browserSync.reload;
  5. // 静态服务器 + 监听 scss/html 文件
  6. gulp.task('serve', ['sass'], function() {
  7. browserSync.init({
  8. server: "./app"
  9. });
  10. gulp.watch("app/scss/*.scss", ['sass']);
  11. gulp.watch("app/*.html").on('change', reload);
  12. });
  13. // scss编译后的css将注入到浏览器里实现更新
  14. gulp.task('sass', function() {
  15. return gulp.src("app/scss/*.scss")
  16. .pipe(sass())
  17. .pipe(gulp.dest("app/css"))
  18. .pipe(reload({stream: true}));
  19. });
  20. gulp.task('default', ['serve']);

 SASS & Source Maps

如果您使用 gulp-ruby-sasssourcemap: true 选项, 将会生成.map 文件. 这些文件最终会被送到下游,在 browserSync.reload() 时接收它们, 它会尝试重新加载页面 (因为它不会在DOM里发现在任何 .map 文件)。

要解决这个问题, 您可以使用 gulp-filter 包, 以确保只有 *.css 文件响应 .reload - 这样一来,您还是会得到CSS注入,而不是整个页面重载。

  1. var gulp = require("gulp");
  2. var sass = require("gulp-ruby-sass");
  3. var filter = require('gulp-filter');
  4. var browserSync = require("browser-sync").create();
  5. // 静态服务器 + 监听 scss/html 文件
  6. gulp.task('serve', ['sass'], function() {
  7. browserSync.init({
  8. server: "./app"
  9. });
  10. gulp.watch("app/scss/*.scss", ['sass']);
  11. gulp.watch("app/*.html").on('change', reload);
  12. });
  13. gulp.task('sass', function () {
  14. return gulp.src('scss/**/*.scss')
  15. .pipe(sass({sourcemap: true}))
  16. .pipe(gulp.dest('css'))// Write the CSS & Source maps
  17. .pipe(filter('**/*.css')) // Filtering stream to only css files
  18. .pipe(browserSync.reload({stream:true}));
  19. });

浏览器重载

有时候,您可能只是想完全重新加载页面 (例如,处理一堆JS文件后), 但您希望在任务发生后重载。这将在 gulp 4.x.x 时变得更容易, 但现在您可以做到以下几点: (确保您 return 从您的工作流 ,以确保 browserSync.reload() 被调用在正确的时间。

  1. // 处理完JS文件后返回流
  2. gulp.task('js', function () {
  3. return gulp.src('js/*js')
  4. .pipe(browserify())
  5. .pipe(uglify())
  6. .pipe(gulp.dest('dist/js'));
  7. });
  8. // 创建一个任务确保JS任务完成之前能够继续响应
  9. // 浏览器重载
  10. gulp.task('js-watch', ['js'], browserSync.reload);
  11. // 使用默认任务启动Browsersync,监听JS文件
  12. gulp.task('serve', ['js'], function () {
  13. // 从这个项目的根目录启动服务器
  14. browserSync({
  15. server: {
  16. baseDir: "./"
  17. }
  18. });
  19. // 添加 browserSync.reload 到任务队列里
  20. // 所有的浏览器重载后任务完成。
  21. gulp.watch("js/*.js", ['js-watch']);
  22. });

 手动重载

如果流支持并不满足您的需求,您可以通过创建一个任务来手动触发重载方法。我们创建了一个sass任务,在我们修改文件后会在浏览器里注入CSS,但是当HTML文件被更改时,浏览器将会被重新加载(手动重载)。

  1. // 使用变量引用 `reload` 方法
  2. var reload = browserSync.reload;
  3. // 编译 SASS & 自动注入到浏览器
  4. gulp.task('sass', function () {
  5. return gulp.src('scss/styles.scss')
  6. .pipe(sass({includePaths: ['scss']}))
  7. .pipe(gulp.dest('css'))
  8. .pipe(reload({stream:true}));
  9. });
  10. // 监听scss和html文件, 当文件发生变化后做些什么!
  11. gulp.task('serve', ['sass'], function () {
  12. // 从这个项目的根目录启动服务器
  13. browserSync({
  14. server: {
  15. baseDir: "./"
  16. }
  17. });
  18. gulp.watch("scss/*.scss", ['sass']);
  19. gulp.watch("*.html").on("change", browserSync.reload);
  20. });

腾讯云限量秒杀

1核2G 5M 50元/年 2核4G 8M 74元/年 4核8G 5M 818元/年 CDN流量包 100GB 9元

版权声明

本站部分原创文章,部分文章整理自网络。如有转载的文章侵犯了您的版权,请联系站长删除处理。如果您有优质文章,欢迎发稿给我们!联系站长:QQ:1292237044
愿本站的内容能为您的学习、工作带来绵薄之力。

评论

  • 随机获取
点击刷新
精彩评论