Search code examples
gulpgulp-4

How to use gulp.series in gulp 4?


Have a super simple gulp file where I want to run some basic gulp tasks in sequence one after the other.

I can't seem to get this running in Gulp v4. Had something similar in Gulp v3 using run-sequence instead of gulp.series()

const gulp = require("gulp");
const clean = require('gulp-clean');

gulp.task('clean-app', async () => {
  return (gulp.src('./dist/app', {read: true, allowEmpty: true})
    .pipe(clean()));
});


gulp.task('clean-tests', async () => {
  return ( gulp.src('./dist/tests', {read: true, allowEmpty: true})
    .pipe(clean()));
});

gulp.task('all-tasks', gulp.series('clean-app', 'clean-tests'));

The individual gulp tasks clean-app and clean-tests run fine individually.

However, when I use gulp all-tasks i get the below error

gulp all-tasks
[17:50:51] Using gulpfile ~\IdeaProjects\my-app\gulpfile.js
[17:50:51] Starting 'all-tasks'...
[17:50:51] Starting 'clean-app'...
[17:50:51] Finished 'clean-app' after 10 ms
[17:50:51] The following tasks did not complete: all-tasks
[17:50:51] Did you forget to signal async completion?

Both clean-app and clean-tests return streams which I thought would be sufficient.

Have tried using gulp4-run-sequence but i get the same error.

Want to be able to run gulp all-tasks such that clean-tests is executed after clean-app has completed successfully.


Solution

  • depending on the official documents here try to run cb() in your tasks like that

    const gulp = require("gulp");
    const clean = require('gulp-clean');
    
    gulp.task('clean-app', (cb) => {
      gulp.src('./dist/app', {read: true, allowEmpty: true}).pipe(clean());
      cb();
    });
    
    gulp.task('clean-tests', (cb) => {
      gulp.src('./dist/tests', {read: true, allowEmpty: true}).pipe(clean());
      cb();
    });
    
    gulp.task('all-tasks', gulp.series('clean-app', 'clean-tests'));