Niklas
Niklas

Reputation: 1788

Gulp 4 Watch Task, run only one time

i have trouble to use Gulp 4. My watch-task runs only one time, when detecting changes, inside my html-files.

Where is my mistake? Please help me to fix my gulpfile

Here is my code:

var gulp            = require('gulp'),
    sass            = require('gulp-sass'),
    cleanCSS        = require('gulp-clean-css'),
    autoprefixer    = require('gulp-autoprefixer'),
    rename          = require('gulp-rename'),
    inject          = require('gulp-inject'),
    uglify          = require('gulp-uglify'),
    concat          = require('gulp-concat'),
    plumber         = require('gulp-plumber'),
    babel           = require('gulp-babel'),
    browserify      = require('gulp-browserify'),
    clean           = require('gulp-clean'),
    sourcemaps      = require('gulp-sourcemaps'),
    htmlmin         = require('gulp-html-minifier'),
    browserSync     = require('browser-sync');


var src             = './src/',
    dist            = './dist/';


//####################################
// MINIFY HTML
gulp.task('html', function(){
    gulp.src(dist + '*.html', {force: true})
        .pipe(clean());
    gulp.src(src + '*.html')
        .pipe(htmlmin({collapseWhitespace: true}))
        .pipe(gulp.dest(dist));
});

//####################################
// WATCH
gulp.task('default', function(){
    gulp.watch([src + '*.html'], gulp.series('html'));
});

When i run the html-task manually, i get the following warning:

The following task did not complete: html Did you forget to signal async completion?

How can i solve this issue, too?

Upvotes: 0

Views: 94

Answers (1)

Niklas
Niklas

Reputation: 1788

I solved my issue, with this code change, inside my html file:

gulp.task('html', done => {
    gulp.src(dist + '*.html', {force: true})
        .pipe(clean());
    gulp.src(src + '*.html')
        .pipe(htmlmin({collapseWhitespace: true}))
        .pipe(gulp.dest(dist));
    done();
});

The Watch-Task works now

Upvotes: 1

Related Questions