0

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

1 回答 1

1

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

我猜你有两个选择。

  1. source为和保留不同的文件夹distribution;观看source并运行任务distribution
  2. 将过滤器添加到路径中,这样您就不会看到要修改的文件。
于 2016-10-06T06:33:39.060 回答