首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在gulp-4中添加浏览器同步

如何在gulp-4中添加浏览器同步
EN

Stack Overflow用户
提问于 2019-06-07 17:23:42
回答 3查看 577关注 0票数 0

//导入gulp文件到变量

代码语言:javascript
复制
    const { src , dest , watch , series , parallel } = require('gulp');
    const autoprefixer = require('autoprefixer');
    const cssnano = require('cssnano');
    const concat = require('gulp-concat');
    const postcss = require('gulp-postcss');
    const replace = require('gulp-replace');
    const sass = require('gulp-sass');
    const sourcemaps = require('gulp-sourcemaps');
    const uglify = require('gulp-uglify');
    const browserSync = require ('browser-sync').create();

// my projects文件夹中的文件路径变量

代码语言:javascript
复制
    const files = {
    scsspath:'assets/scss/**/*.scss' , 
    jspath:'assets/js/**/*.js'}

//Sass任务

代码语言:javascript
复制
    function scssTask(){
    return src(files.scsspath)
    .pipe(sourcemaps.init())
    .pipe(sass())
    .pipe(postcss([autoprefixer(), cssnano()]))
    .pipe(sourcemaps.write('.'))
    .pipe(dest('assets/css'))
    .pipe(browsersync.stream());}

//JsTask

代码语言:javascript
复制
    function jsTask(){
    return src(files.jspath)
   .pipe(concat('all.js'))
   .pipe(uglify())
   .pipe(dest('assets/js')).pipe(browsersync.stream());}

//WatchTask

代码语言:javascript
复制
   function watchTask(){
   watch([files.scsspath , files.jspath], parallel(scssTask,jsTask));}

//DefaultTask //我不知道如何在gulp-4中使用浏览器同步

代码语言:javascript
复制
   exports.default = series(parallel(scssTask,jsTask) , cashBustTask , 
   watchTask,browsersync);
EN

回答 3

Stack Overflow用户

发布于 2019-06-11 00:03:43

为浏览器同步创建一个单独的任务。下面是我如何设置它的一个示例:

代码语言:javascript
复制
const bs = require('browser-sync').create();
// Other inputs used with browser-sync
const { src, dest, watch } = require('gulp');
const sass = require('gulp-sass');

function browserSync() {
  // Run serveSass function when starting the dev server to make sure the SCSS & dev CSS are the same
  serveSass();

  bs.init({
    // Dev server will run at localhost:8080
    port: 8080,
    server: {
      // I'm using 'src' as my base directory
      baseDir: 'src',
    },
  });

  // These watch for changes to files and reload in the browser
  watch('src/*.html').on('change', bs.reload);
  watch('src/scss/*.scss', serveSass);
  watch('src/js/*.js').on('change', bs.reload);
}

// This compiles Sass when running browser-sync and reloads the CSS
function serveSass() {
  // My dev Sass files are found in 'src/scss/'
  return src('src/scss/*.scss')
    .pipe(sass())
    // My dev CSS files are found in 'src/css/'
    .pipe(dest('src/css))
    .pipe(bs.stream());
}

// Then I run 'gulp serve' in the terminal to start browser-sync and my dev server
exports.serve = browserSync;

如果你想要更多的上下文,我的完整的Gulp设置是here

票数 0
EN

Stack Overflow用户

发布于 2019-07-23 23:31:57

快速解决方案:

添加触发BrowserSync的函数:

代码语言:javascript
复制
function reload(){
    browserSync.reload();
}

watchTask()函数修改为:

代码语言:javascript
复制
function watchTask(){
    browserSync.init({
        server: { baseDir: "./dist" }
    });
    gulp.watch([files.scsspath , files.jspath], parallel(scssTask,jsTask,reload));
}

exports修改为:

代码语言:javascript
复制
exports.default = watchTask;
票数 0
EN

Stack Overflow用户

发布于 2020-10-28 21:55:55

我找到了这个guide to upgrade gulp 4,它解释了需要使用gulp.series或gulp.parallel。示例:

代码语言:javascript
复制
var gulp        = require('gulp');
var browserSync = require('browser-sync').create();

gulp.task('browserSyncReload', gulp.series( function(done) {    
  browserSync.reload();
  done();
}));

gulp.task('default', gulp.series( function(done) {    
  browserSync.init({
      notify: false,
      proxy: "127.0.0.1:5003/nl"
  });
  gulp.watch("app/templates/**/*.", gulp.series('browserSyncReload'));
  gulp.watch("app/static/**/*.*", gulp.series('browserSyncReload'));
  done();
}));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56491565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档