2016-04-14 3 views
0

Я использую «Глоток-часы», чтобы отслеживать изменения файлов в папке images/, и используя «Глоток-imagemin» вместе с «Глоток-кэш», чтобы сжать и перезаписатьизменен файлы изображений.Глоток-часы задача приводит к бесконечной петле

Задача 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']); 
+0

Попробуйте использовать другой каталог dest для ваших изображений. – Barryman9000

+0

@ Barryman9000 Спасибо. Это может решить проблему, но я бы просто перезаписал изображения src. Возможно, пакет 'gulp-cache' может разрушить бесконечный цикл' gulp-watch', но я не нашел способа добиться этого. – knight9631

ответ

1

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

У меня есть два варианта.

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