Как я могу выполнить задачу 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;
    }
} );

Это лучший способ сделать это? Я не знаю. Мой вопрос получил почти нулевое внимание со стороны сообщества. Но это точно работает для меня. Я надеюсь, что это поможет кому-то в будущем.

Другие вопросы по тегам