2015-07-02 131 views
1

對於某些圖像優化作業,我使用gulp以及gulp-imagemin。我設置了gulp watch要監視更改一次我:Gulp:如果源已被刪除,如何讓gulp自動刪除輸出文件?

  1. 添加新的圖像輸出到圖像源文件夾
  2. 在圖像源文件夾中刪除的圖像

到目前爲止,第一個作品很當添加新圖像時,gulp運行任務並壓縮該新圖像;但是,當我刪除圖像時,吞嚥似乎沒有做任何事情。我在這裏錯過了一個插件還是一些設置?

請參閱我下面gulpfile

// gulpfile.js 
var gulp = require('gulp'); 
var newer = require('gulp-newer'); 
var imagemin = require('gulp-imagemin'); 


var imgSrc = 'src/images/**'; 
var imgDest = 'images'; 

gulp.task('images', function() { 
    return gulp.src(imgSrc) 
    .pipe(newer(imgDest)) 
    .pipe(imagemin({ 
     optimizationLevel: 5, 
     progressive: true, 
     interlaced: true 
    })) 
    .pipe(gulp.dest(imgDest)); 
}); 

gulp.task('watch', function() { 
    gulp.watch(imgSrc, ['images']); 
}); 

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

回答

1

試試這個:

var gulp = require('gulp'); 
var del = require('del'); 
var imagemin = require('gulp-imagemin'); 

var imgSrc = 'src/images/**'; 
var imgDest = 'dist/images'; 

gulp.task('images', function() { 
    return gulp.src(imgSrc) 
    .pipe(imagemin({ 
     optimizationLevel: 5, 
     progressive: true, 
     interlaced: true 
    })) 
    .pipe(gulp.dest(imgDest)); 
}); 

gulp.task('clean-img', function (cb) { 
return del(imgDest,cb); 
}); 
gulp.task('watch', function() { 
    gulp.watch(imgSrc, ['clean-img','images']); 
}); 

gulp.task('default', ['clean-img','images', 'watch']); 

這將清除出你DIST文件夾並添加從src文件夾中的圖像。不幸的是,這種方法不適用於gulp-newer,並會在每次更改時處理所有圖像。 「

+0

」每次改變都會處理你的所有圖片。「...是的,太可怕了(有關這方面的消息嗎? – jdnichollsc