@biz53

Как научить imagemin (gulp) сжимать только новые фото и не трогать уже обработанные?

Вопрос
Есть галп файл, в нем подключен imagemin и соответственно вотчер для слежения за обновлением файлов. Возможно ли как-то сделать, чтобы таск compress (см. ниже) срабатывал только для новых/изменённых файлов, и пропускал старые (уже обработанные)? Вопрос возник из-за большого количества картинок. Последнее выполнение таска заняло 3 минуты, при этом картинок в будущем планируется еще больше.
Пример настройки imagemin:
function compress () {
  return gulp.src(src.img)
    .pipe(
        webp({
            quality: 70
        }))
    .pipe(gulp.dest(`./build/img/`))
    .pipe(gulp.src(src.img))
    .pipe(imagemin({
        progressive: true,
        svgoPlugins: [{removeViewBox: false}],
        interlaced: true,
        optimizationlevel: 5
    }))
    .pipe(gulp.dest(`./build/img/`))
    .pipe(browserSync.stream())
}
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
Get-Web
@Get-Web Куратор тега CSS
Front-End Developer
Подключаем библиотеку gulp-changed
const changed = require('gulp-changed');

И первым делом перед тем как сжимать проверяем время последнего изменения, затем сравниваем хеш:

.pipe(changed(dir.output + '/images', {
            hasChanged: changed.compareLastModifiedTime
        }))
        .pipe(changed(dir.output + '/images', {
            hasChanged: changed.compareContents
        }))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы