Как я могу выполнить задачу gulp только для новых и измененных файлов?
Я пытаюсь использовать gulp-imagemin для оптимизации изображений в моем проекте. Но я хочу запускать imagemin только при добавлении нового изображения или изменении текущего изображения. И я хочу запустить его только на новом / измененном изображении.
Кто-то предложил использовать изменения и добавить такие события:
gulp.watch( [ 'myfolder/**/*.png', 'myfolder/**/*.svg' ] )
.on( "change", function(file){
console.log("change");
// do imagemin stuff here
} );
Но событие "изменение" не вызывается. Я также пытался с событием "добавить" с теми же результатами.
Мои знания о глотке все еще ограничены, и я не могу понять, как это сделать. Так как же запустить imagemin только на новых / измененных изображениях?
1 ответ
Мне удалось найти способ заставить вещи работать.
gulp.watch( [ 'myfolder/**/*.png', 'myfolder/**/*.svg' ], function (event) {
switch (event.type)
{
case 'added':
case 'changed':
gulp.src( event.path )
.pipe( imagemin({
optimizationLevel: 5,
progressive: true,
svgoPlugins: [{removeViewBox: false}],
use: [pngquant()]
}) )
.pipe( gulp.dest( strImgDest ) );
break;
}
} );
Это лучший способ сделать это? Я не знаю. Мой вопрос получил почти нулевое внимание со стороны сообщества. Но это точно работает для меня. Я надеюсь, что это поможет кому-то в будущем.