すでに処理された画像の縮小、サイズ変更、名前変更を回避しようとしましたが、「gulp-changed」を追加しても何も変わりませんでした。すべてのファイルが毎回処理されます。代わりに「gulp-newer」を試しましたが、まだ運がありません。
後になって、gulp-rename を惜しまなければ、gulp-changed が正常に動作することがわかりました。タスクに gulp-rename を使用すると、そうではありません。しかし、とにかく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));
});