如何仅对新文件和已更改的文件运行gulp任务?

时间:2016-04-27 18:37:17

标签: gulp gulp-imagemin gulp-watch

我正在尝试使用gulp-imagemin优化项目中的图像。但我想只在添加新图像或更改当前图像时才运行imagemin。我想只在新的/更改的图像上运行它。

有人建议使用此更改并添加如下事件:

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

但是没有调用“更改”事件。我也尝试了“添加”事件,结果相同。

我对gulp的了解仍然有限,我无法弄清楚如何做到这一点。那么如何才能在新/更改的图像上运行imagemin?

1 个答案:

答案 0 :(得分:0)

我设法找到一种让事情有效的方法。

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;
    }
} );

这是最好的方法吗?我不知道。我的问题几乎没有得到社区的关注。但它确实适合我。我希望这将有助于将来的人。