通过Gulp生成和优化Webp

时间:2017-09-24 12:48:31

标签: optimization gulp yeoman-generator webp

我正在使用包含imagemin的generator webapp。我还在我的版本中添加了imagemin-webpgulp-webp

我不确定如何实施。除了添加webp之外,我还想保留原始的jpg和png图像,并在运行gulp build任务时优化所有这些图像。

我对this stage感到困惑。

如何根据我当前的设置实现它:

const webp = require('gulp-webp');
const imageminWebp = require('imagemin-webp');

gulp.task('images', () => {
    return gulp.src('app/images/**/*')
    .pipe(webp())
    .pipe($.cache($.imagemin()))
    .pipe(gulp.dest('dist/images'));
});

目前,这只会生成未经优化的webp文件,并且不会打包任何原始的jpg和png文件。

2 个答案:

答案 0 :(得分:0)

您必须包含gulp-clone以使用其webp对应项输出原始文件。它看起来像这样:

const webp = require('gulp-webp');
const imageminWebp = require('imagemin-webp');
const clone = require('gulp-clone');
const clonesink = clone.sink();

gulp.task('images', () => {
    return gulp
        .src('app/images/**/*')
        .pipe($.cache($.imagemin())) // optimize images before converting
        .pipe(clonesink) // start stream
        .pipe(webp()) // convert images to webp and save a copy of the original format
        .pipe(clonesink.tap()) // close stream and send both formats to dist
        .pipe(gulp.dest('dist/images'));
});

答案 1 :(得分:0)

这是我在 2021 年的选择。如果你有什么问题,尽管问我。

const {src, dest, parallel, series, watch} = require('gulp');
const imagemin = require('gulp-imagemin');
const webp = require('imagemin-webp');
const extReplace = require('gulp-ext-replace');

const exportWebP = () => {
  return src(['./src/img/**/*.jpg', './src/img/**/*.png'], {base: 'src'})
    .pipe(imagemin([
      webp({
        quality: 60,
      })
    ]))
    .pipe(extReplace('.webp'))
    .pipe(dest('./app/'))
}

watch(['./src/img/**/*.jpg', './src/img/**/*.png'], exportWebP);
exports.default = series(parallel(exportWebP));