Delete files and folders

You might want to delete some files before running your build. Since deleting files doesn't work on the file contents, there's no reason to use a gulp plugin. An excellent opportunity to use a vanilla node module.

Let's use the del module for this example as it supports multiple files and globbing:

$ npm install --save-dev gulp del

Imagine the following file structure:

.
├── dist
│   ├── report.csv
│   ├── desktop
│   └── mobile
│       ├── app.js
│       ├── deploy.json
│       └── index.html
└── src

In the gulpfile we want to clean out the contents of the mobile folder before running our build:

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

gulp.task('clean:mobile', function () {
  return del([
    'dist/report.csv',
    // here we use a globbing pattern to match everything inside the `mobile` folder
    'dist/mobile/**/*',
    // we don't want to clean this file though so we negate the pattern
    '!dist/mobile/deploy.json'
  ]);
});

gulp.task('default', ['clean:mobile']);

Delete files in a pipeline

You might want to delete some files after processing them in a pipeline.

We'll use vinyl-paths to easily get the file path of files in the stream and pass it to the del method.

$ npm install --save-dev gulp del vinyl-paths

Imagine the following file structure:

.
├── tmp
│   ├── rainbow.js
│   └── unicorn.js
└── dist
var gulp = require('gulp');
var stripDebug = require('gulp-strip-debug'); // only as an example
var del = require('del');
var vinylPaths = require('vinyl-paths');

gulp.task('clean:tmp', function () {
  return gulp.src('tmp/*')
    .pipe(vinylPaths(del))
    .pipe(stripDebug())
    .pipe(gulp.dest('dist'));
});

gulp.task('default', ['clean:tmp']);

This will only delete the tmp dir.

Only do this if you're already using other plugins in the pipeline, otherwise just use the module directly as gulp.src is costly.

results matching ""

    No results matching ""