Skip to content Skip to sidebar Skip to footer

Deleting Files In A Gulp Task

I have a gulp task in which I want to take some source files and copy them to build/premium and build/free and then remove some extra files from build/free. My attempt at that was

Solution 1:

This is a simple clean task implementation with gulp-del:

var del = require('gulp-del');

gulp.task('clean', function(){
  returndel(['folderA/js', 'folderA/css', 'folderB/js']);
});

In your case you can just call it after build (read "use build as a dependency"):

gulp.task("build", function () {
  return gulp.src(['src/*', '!src/composer.*', 'LICENSE'])
    .pipe(gulp.dest("build/premium"))
    .pipe(gulp.dest("build/free"));
});

gulp.task("complete-build", ["build"] function(){
  returndel(['build/free/plugins/*', '!build/free/plugins/index.php']);
});

Then call the "complete-build" task to perform it. To be honest this is more a "Grunt"-like approach to the problem, but done with Gulp. Perhaps the recommendation to filter things before writing them in the build/free folder is more in the Gulp spirit.

Update 2/2018

The delete module has been renamed to del now as reported by @gerl:

var del = require('del');

gulp.task('clean', function(){
  returndel(['folderA/js', 'folderA/css', 'folderB/js']);
});

Solution 2:

I would use gulp-filter to drop only what should not be copied from the 2nd destination.

I interpreted the intent of the task as wanting everything present in src to be present in build/premium. However, build/free should exclude everything which was originally in src/plugins but should still include src/plugins/index.php.

Here is a working gulpfile:

var gulp = require("gulp");
var filter = require("gulp-filter");
var del = require("del");

gulp.task("clean", function () {
  returndel("build");
});

gulp.task("build", ["clean"], function () {
  return gulp.src(["src/**", "!src/composer.*", "LICENSE"])
    .pipe(gulp.dest("build/premium"))
    .pipe(filter(["**", "!plugins/**", "plugins/index.php"]))
    .pipe(gulp.dest("build/free"));
});

The patterns passed to filter are relative paths. Since the gulp.src pattern has src/** it means they are relative to src.

Note also that del cannot be passed straight to .pipe() as it returns a promise. It can be returned from a task, like the clean task does.

Post a Comment for "Deleting Files In A Gulp Task"