【问题标题】:Browsersync + gulp-watch not workingBrowsersync + gulp-watch 不工作
【发布时间】:2018-11-14 10:19:27
【问题描述】:

在我的项目中,我使用 gulp + browsersync。更新 gulp v.4.0.0. 后,browsersync 不起作用,并且我的样式在 watch 运行时没有编译(仅在手动重启后 gulp watch)。

这是我的 gulpfile.js:

var gulp = require('gulp'),
sass = require('gulp-sass'),
browserSync = require('browser-sync'),
concat = require('gulp-concat'),
uglify = require('gulp-uglifyjs'),
cssnano = require('gulp-cssnano'),
rename = require('gulp-rename'),
del = require('del'),
imagemin = require('gulp-imagemin'),
pngquant = require('imagemin-pngquant'),
autoprefixer = require('gulp-autoprefixer');

gulp.task('sass', function(){
return gulp.src('app/scss/**/*.scss')
    .pipe(sass())
    .pipe(autoprefixer(['last 15 versions', '> 1%'], {cascade: true}))
    .pipe(cssnano())
    .pipe(rename({suffix: '.min'}))
    .pipe(gulp.dest('css'))
    .pipe(browserSync.reload({stream: true}))
 });

gulp.task('css-libs', gulp.parallel('sass'), function(){
return gulp.src('app/css/main.css')
    .pipe(cssnano())
    .pipe(rename({suffix: '.min'}))
    .pipe(gulp.dest('app/css'));
});


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


gulp.task('watch', gulp.parallel('browser-sync', 'css-libs'), function(){
gulp.watch('app/scss/*.scss', ['sass']);
gulp.watch('*.html', browserSync.reload);
});

如何解决?

UPD

这是我的package.json

当我 change scss file 时 Gulp-watch 不工作。

【问题讨论】:

  • 最好能提供完整的信息。包括您的 package.json 和您收到的错误消息。见stackoverflow.com/help/mcve
  • @JacobGoh 我没有错误。它工作正常,但 gulp-watch 不工作。我更新我的问题
  • 你解决了吗?
  • @CodeGust 不,我回到以前的版本

标签: javascript gulp browser-sync gulp-watch gulp-sass


【解决方案1】:

我相信你的“监视”任务应该这样重写:

gulp.task('browser-sync', function(){

  // note the .init

  browserSync.init({
      server: {
          //baseDir: 'app'
          baseDir: './'
      },
      notify:false
  })
});

gulp.task('watch', gulp.parallel('browser-sync', 'css-libs', function(done){

   //   change in the previous line and the following line

  gulp.watch('app/scss/*.scss', gulp.series('sass'));
  gulp.watch('*.html', browserSync.reload);
  done();
}));

因此对手表的函数调用是 gulp.parallel 调用的一部分。请参阅parallel tasks documentationgulp.task signature

gulp.task('default', gulp.parallel('one', 'two', function(done) {
  // do more stuff
  done();
}));

【讨论】:

  • 我已经尝试过了,但是当我更改 scss 文件i.gyazo.com/9ad5410c312726d12a22d5be4556db27.png时手表仍然无法正常工作@
  • 那么你是说修改scss文件时不会触发'sass'任务?而且您完全尝试了我建议的代码。
  • 好的,经过测试,我对上面的答案进行了更多更改。这对我来说非常有效。
猜你喜欢
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多