2016-04-14 39 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. sourcedistribution保留不同的文件夾;觀看source並在distribution上運行任務。
  2. 將過濾器添加到路徑中,因此您不會看到要修改的文件。