4

I tried to add a gulp task like below and run gulp images so that it only runs only on added/changed files However, that seems to not work...Any idea?

  gulp.task('images', function (event) {
  switch (event.type)
  {
    case 'added':
    case 'changed':
      gulp.src(event.path)
        return gulp.src(config.images.src)
        .pipe(imagemin({
          optimizationLevel: 5,
          progressive: true,
          svgoPlugins: [{removeViewBox: false}],
          use: [pngcrush()]
        }))
        .pipe(gulp.dest(config.images.dest));
      break;
  }
});
Hello Universe
  • 3,248
  • 7
  • 50
  • 86

2 Answers2

5

You can use gulp-newer to only pass newer files.

Insert a pipe before imagemin with the destination folder as parameter.

gulp.task('images', function (event) {
  gulp.src(event.path)
    return gulp.src(config.images.src)
    .pipe(newer(config.images.dest))
    .pipe(imagemin({
      optimizationLevel: 5,
      progressive: true,
      svgoPlugins: [{removeViewBox: false}],
      use: [pngcrush()]
    }))
    .pipe(gulp.dest(config.images.dest));
});
Samuel Liew
  • 76,741
  • 107
  • 159
  • 260
Headwiki
  • 66
  • 3
3

Besides gulp-newer as mentioned by @Headwiki, the other popular tool for this is gulp-changed.

Depending on your exact needs gulp-newer or gulp-changed might be better… or for your project it might not make a different. For more on that, see the question "gulp-newer vs gulp-changed?"

Community
  • 1
  • 1
henry
  • 4,244
  • 2
  • 26
  • 37