Как я могу выполнить задачу gulp imagemin только для новых и измененных файлов?
Я попытался добавить задачу gulp, как показано ниже, и запустить изображения gulp, чтобы она работала только на добавленных / измененных файлах. Однако, это, похоже, не работает... Есть идеи?
gulp.task('images', function (event) {
switch (event.type)
{
case 'added':
case 'changed':
gulp.src(event.path)
return gulp.src(config.images.src)
.pipe(imagemin({
optimizationLevel: 5,
progressive: true,
svgoPlugins: [{removeViewBox: false}],
use: [pngcrush()]
}))
.pipe(gulp.dest(config.images.dest));
break;
}
});
2 ответа
Решение
Вы можете использовать gulp-newer только для передачи новых файлов.
Вставьте канал перед imagemin с целевой папкой в качестве параметра.
gulp.task('images', function (event) {
gulp.src(event.path)
return gulp.src(config.images.src)
.pipe(newer(config.images.dest))
.pipe(imagemin({
optimizationLevel: 5,
progressive: true,
svgoPlugins: [{removeViewBox: false}],
use: [pngcrush()]
}))
.pipe(gulp.dest(config.images.dest));
});
Кроме того gulp-newer
как уже упоминалось @Headwiki, другой популярный инструмент для этого gulp-changed
,
В зависимости от ваших точных потребностей gulp-newer
или же gulp-changed
может быть лучше... или для вашего проекта это не может измениться. Подробнее об этом см. Вопрос "gulp-newer vs gulp-change?"