Gulp 复制图像并转换为 webp

Gulp duplicate image and convert to webp

我在 Gulp 中为我的图像任务添加了 webp 转换。它按照罐子上的说明进行操作并转换图像。我真正想要实现的是图像的重复 webp 版本,而不是替换它。

我的任务如下;

gulp.task('images', function() {
    return gulp.src(config.img)
        // Only optimize changed images
        .pipe(plugins.changed(config.dist.img))

        // Imagemin
        .pipe(plugins.imagemin({
            optimizationLevel: 3,
            progressive: true,
            svgoPlugins: [{
                removeViewBox: false
            }]
        }))

        .pipe(webp())

        // Set destination
        .pipe(gulp.dest(config.dist.img))

        // Show total size of images
        .pipe(plugins.size({
            title: 'images'
        }));
});

我假设转换需要发生在原件的副本上,而不是原件本身。

我是 Gulp 的新手,所以只是想了解一下这个过程。

流程中的其他一切都完全符合预期。

gulp-clone plugin 允许您对文件的副本执行操作,然后恢复原始文件:

gulp.task('images', function() {
    var sink = plugins.clone.sink();  // init sink

    return gulp.src(config.img)
        // Only optimize changed images
        .pipe(plugins.changed(config.dist.img))

        // Imagemin
        .pipe(plugins.imagemin({
            optimizationLevel: 3,
            progressive: true,
            svgoPlugins: [{
                removeViewBox: false
            }]
        }))

        .pipe(sink)        // clone image
        .pipe(webp())      // convert cloned image to WebP
        .pipe(sink.tap())  // restore original image

        // Set destination
        .pipe(gulp.dest(config.dist.img))

        // Show total size of images
        .pipe(plugins.size({
            title: 'images'
        }));
});