0

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

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

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

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

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

4

1 回答 1

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

这是最好的方法吗?我不知道。我的问题几乎得到了社区的零关注。但它确实对我有用。我希望这对将来的某人有所帮助。

于 2016-04-28T14:06:16.840 回答