【问题标题】:Live reload is not working after upgrading to Gulp 4升级到 Gulp 4 后实时重新加载无法正常工作
【发布时间】:2018-12-26 13:15:11
【问题描述】:

我的 gulpfile.js 如下所示,

var gulp = require('gulp');
var pug = require('gulp-pug');
var sass = require('gulp-sass');
var minifyCSS = require('gulp-csso');
var concat = require('gulp-concat');
var sourcemaps = require('gulp-sourcemaps');
var connect = require('gulp-connect');

gulp.task('connect', function () {
    connect.server({
        root: 'build',
        livereload: true,
        port: 3000
    });
});

gulp.task('html', function () {
    return gulp.src('client/html/**/*.pug')
        .pipe(pug({
            pretty: true
        }))
        .pipe(gulp.dest('build'))
        .pipe(connect.reload())
});

gulp.task('css', function () {
    return gulp.src(['node_modules/bootstrap/scss/bootstrap.scss', 'client/scss/*.scss'])
        .pipe(sass({ outputStyle: 'compressed' }))
        .pipe(gulp.dest('build/css'))
        .pipe(connect.reload())
});

gulp.task('images', function () {
    return gulp.src(['client/assets/**/*.*'])
        .pipe(gulp.dest('build/assets'))
        .pipe(connect.reload())
});

gulp.task('js', function () {
    return gulp.src('client/javascript/*.js')
        .pipe(sourcemaps.init())
        .pipe(concat('app.min.js'))
        .pipe(sourcemaps.write())
        .pipe(gulp.dest('build/js'))
        .pipe(connect.reload())
});

gulp.task('watch', gulp.parallel('html', 'css', 'js'));

gulp.task('default', gulp.series('connect', 'watch', 'html', 'css', 'images', 'js'));

当我运行此代码时,我在控制台上没有收到任何错误,而且浏览器上也不会自动重新加载。我在以前版本的 Gulp 中做到了这一点,但无法以某种方式使用 Gulp 4 运行它。现在每当我停止服务器时,都会出现以下错误,

[18:44:35] The following tasks did not complete: default, connect
[18:44:35] Did you forget to signal async completion?

任何帮助将不胜感激。谢谢

【问题讨论】:

    标签: gulp gulp-watch gulp-connect


    【解决方案1】:

    尝试更改连接函数以显式调用 done();我认为在 Gulp 4 中调用 series() 时会需要这个

    gulp.task('connect', function (done) {
        connect.server({
            root: 'build',
            livereload: true,
            port: 3000
        });
    
        done();
    });
    

    【讨论】:

      【解决方案2】:
      gulp.task('html', (done) => 
         gulp.src('client/html/**/*.pug')
            .pipe(pug({
                pretty: true
            }))
            .pipe(gulp.dest('build'))
            .on('end', () => { 
               connect.reload();
               done();
            });
      );
      

      【讨论】:

      • 您好,您能解释一下您的代码是如何解决问题的吗?
      • 大多数 gulp 插件在 src 和 dest 方法之间运行。 Dest:创建用于将 Vinyl 对象写入文件系统的流。您必须收听流才能完成任务。
      猜你喜欢
      • 2019-10-03
      • 1970-01-01
      • 2016-06-11
      • 2019-07-14
      • 2015-11-03
      • 2020-08-20
      • 2020-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多