Как я могу запустить задачу gulp только для новых и измененных файлов?

Я пытаюсь использовать gulp-imagemin для оптимизации изображений в моем проекте. Но я хочу запускать imagemin только при добавлении нового изображения или изменении текущего изображения. И я хочу запускать его только на новом/измененном образе.

Кто-то предложил использовать изменение и добавить такие события:

gulp.watch( [ 'myfolder/**/*.png', 'myfolder/**/*.svg' ] )
    .on( "change", function(file){
        console.log("change");
        // do imagemin stuff here
    } );

Но событие "change" не вызывается. Я также пробовал с событием «добавить» с теми же результатами.

Мои знания gulp все еще ограничены, и я не могу понять, как это сделать. Итак, как я могу запускать imagemin только на новых/измененных изображениях?


person Gabriel    schedule 27.04.2016    source источник


Ответы (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;
    }
} );

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

person Gabriel    schedule 28.04.2016