Избегайте выполнения задачи gulp, если файл не изменился (для нескольких пользователей)

#git #gulp

#git #gulp

Вопрос:

Я использую gulp-changed, чтобы избежать запуска задачи, если файлы не изменились.

Изображения в assets / images и в DEST / images сохраняются в репозитории git.

Проблема в том, что когда другие пользователи запускают задачу в первый раз, она восстанавливает все изображения. Изображения, безусловно, немного отличаются, потому что git отмечает тему как измененную.

Как я могу избежать создания оптимизирующих изображений ** для каждого пользователя *, если исходное изображение не изменилось.

Это то, что я использую прямо сейчас

 // Optimize image and move them in the DEST folder
gulp.task('images', function () {
  return gulp.src(['assets/images/**'])
    // Take only files changed since the last time it was run
    .pipe(changed(DEST   '/images'))
    .pipe(imagemin({
      pngquant: true,
      progressive: true
    }))
    .pipe(gulp.dest(DEST   '/images'))
});
 

Ответ №1:

Имело бы смысл посмотреть, изменились ли исходные изображения (ресурсы / изображения /), а не проверять версии DEST.
Лично я обнаружил, что gulp-change слишком медленный, и на самом деле их просто быстрее выполнить, чем сначала проверить. Очевидно, зависит от того, когда и где вы это делаете, и сколько у вас изображений.

Комментарии:

1. Вот как работает changed, сравнивая src и dest . См. Документ npmjs.org/package/gulp-changed

2. Да, хороший момент, я думаю, мой мозг работает не очень хорошо! Если изображения были уменьшены по сравнению с оригиналами, не будут ли файлы dest всегда отличаться от файлов src ?!

3. Во-первых, как я понимаю, это изменение имеет другой метод сравнения (хэш, дата)…. но да, для меня тоже размыто. Я постараюсь узнать больше и вернусь сюда, чтобы ответить на этот вопрос!