Как я могу выполнить задачу gulp imagemin только для новых и измененных файлов?

Я попытался добавить задачу gulp, как показано ниже, и запустить изображения gulp, чтобы она работала только на добавленных / измененных файлах. Однако, это, похоже, не работает... Есть идеи?

  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;
  }
});

2 ответа

Решение

Вы можете использовать gulp-newer только для передачи новых файлов.

Вставьте канал перед imagemin с целевой папкой в ​​качестве параметра.

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));
});

Кроме того gulp-newer как уже упоминалось @Headwiki, другой популярный инструмент для этого gulp-changed,

В зависимости от ваших точных потребностей gulp-newer или же gulp-changed может быть лучше... или для вашего проекта это не может измениться. Подробнее об этом см. Вопрос "gulp-newer vs gulp-change?"

Другие вопросы по тегам