2015-11-02 92 views
1

我嘗試繞過縮小,調整大小和重命名已經處理過的圖像,並且添加'gulp-changed'改變了我的任何內容;所有的文件都經過處理,每次都是。我嘗試了「吞嚥新的」,但仍然沒有運氣。後來,我已經想通了 - 如果我將閒置重命名,吞噬改變的工作正常。在任務中進行gulp重命名 - 事實並非如此。但我需要吞下,重命名反正...gulp-changed/gulp-newer + gulp-rename不起作用

var gulp  = require('gulp'); 
var changed  = require('gulp-changed'); 
var imagemin = require('gulp-imagemin'); 
var pngquant = require('imagemin-pngquant'); 
var imageResize = require('gulp-image-resize'); 
var rename  = require('gulp-rename'); 

var img_src = ['_img/**/*.jpg', '_img/**/*.png']; 
var img_dest = '_site/img'; 

gulp.task('resize-xl', function() { 
    return gulp.src(img_src) 
    .pipe(changed(img_dest)) 
    .pipe(imageResize({ 
     width : 2048, 
     crop : false, 
     upscale : true, 
     sharpen: false, 
     quality: 1 
    })) 
    .pipe(imagemin({ 
      progressive: true, 
      svgoPlugins: [{removeViewBox: false}], 
      use: [pngquant()] 
     })) 
     .pipe(rename(function (path) { 
      path.basename += "-2048"; 
     })) 
     .pipe(gulp.dest(img_dest)); 
}); 
+0

它是否僅適用於吞嚥手錶?如果是這樣,也許這就是原因;我沒有設置它。 – Mike

+0

我不知道我是否錯過了一些東西,但是'resize-xl'任務只能執行一次?如何吞噬改變會知道您的文件夾的以前的狀態? –

回答

1

的所有文件進行處理,еvery時間,因爲在與gulp.src(img_src)名稱更改文件你的任務支票gulp-changed(或gulp-newer)。 而且由於img_dest中存在沒有原始名稱的文件,因此img_src目錄中的所有文件都將執行任務。

要解決此問題,可以使用暫存目錄修改文件。 例如:

1)創建新目錄'_resize'。

2)修改gulpfile.js:

var img_resize = '_resize'; 

gulp.task('resize-xl', function() { 
    return gulp.src(img_src) 
     .pipe(changed(img_resize)) 

     // add here your image plugins: imageResize, imagemin, .. 

     // save the modified files with original names on '_resize' dir 
     .pipe(gulp.dest(img_resize)) 

     .pipe(rename({ suffix: '-2048' })) 
     // save the modified files with new names on destanation dir 
     .pipe(gulp.dest(img_dest)); 
}); 

第一次運行後,此任務將只處理新的和修改過的文件

0

您還可以通過管道將之前重命名文件改變插件,所以插件使用新名稱獲取源文件:

gulp.task('resize-xl', function() { 
return gulp.src(img_src) 
    // change name first 
    .pipe(rename({ suffix: '-2048' })) 
    .pipe(changed(img_dest)) 

    // add here your image plugins: imageResize, imagemin, .. 

    .pipe(gulp.dest(img_dest)); 
});