Задача gulp-watch, приводящая к бесконечному циклу

Я использую gulp-watch для отслеживания изменений файлов в папке images/ и использую gulp-imagemin вместе с gulp-cache для сжатия и перезаписи измененных. > файлы изображений.

Задача watch выполняется правильно, а задача img-minify зависает в бесконечном цикле, когда я добавляю новый файл изображения.

Я пытался исключить использование «gulp-cache», однако задача img-minify по-прежнему приводила к бесконечному циклу.

Спасибо.

var gulp = require('gulp'),
    watch = require('gulp-watch'),        
    imagemin = require('gulp-imagemin'),
    pngquant = require('imagemin-pngquant'),
    cache = require('gulp-cache');

gulp.task('clear', function() {
    return cache.clearAll();
});

gulp.task('img-minify', function() {
    var paths = {
        src: 'images/**/*',
        dest: 'images/'
    };
    return gulp.src(paths.src)
    .pipe(cache(imagemin({
        progressive: true,
        use: [pngquant()]
    })))
    .pipe(gulp.dest(paths.dest));
});

var paths = { 'img': ['images/**/*.png', 'images/**/*.jpg'] };
gulp.task('watch', function() {
    watch(paths.img, function() {
        gulp.start('img-minify');
    });
});

gulp.task('default', ['watch']);

person knight9631    schedule 14.04.2016    source источник
comment
Попробуйте использовать другой каталог назначения для ваших изображений.   -  person Barryman9000    schedule 16.04.2016
comment
@ Барриман9000 Спасибо. Это может решить проблему, но я бы хотел просто перезаписать изображения src. Возможно, пакет gulp-cache мог разорвать бесконечный цикл на gulp-watch, но я не нашел способа добиться этого.   -  person knight9631    schedule 17.04.2016


Ответы (1)


Я предполагаю, что вы просматриваете папку и запускаете задачу, которая изменит эту же папку. Делая это, наблюдатель всегда будет ловить изменение файла и запускать задачу снова, снова и снова.

Думаю, у вас есть два варианта.

  1. Держите разные папки для source и distribution; смотреть source и запускать задачу на distribution.
  2. Добавьте фильтры к пути, чтобы вы не смотрели файлы, которые будете изменять.
person FTM    schedule 06.10.2016