Gulp-watch任务导致无限循环

时间:2016-04-14 14:29:24

标签: gulp gulp-watch gulp-imagemin

我正在使用' 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']);

1 个答案:

答案 0 :(得分:1)

我猜您正在观看文件夹并触发将修改同一文件夹的任务。通过这样做,观察者将始终捕获文件更改并再次触发任务,并且一次又一次。

我猜你有两个选择。

  1. 0402source保留不同的文件夹;观看distribution并在source上运行任务。
  2. 在路径中添加过滤器,因此您不会看到要修改的文件。