You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置vite-plugin-image-optimizer并行将PNG/JPG转为WebP?

如何实现Vite项目中图片压缩并并行生成WebP格式?

问题描述

我当前Vite项目的vite.config.js配置如下:

import { defineConfig } from 'vite';
import injectHTML from 'vite-plugin-html-inject';
import { ViteImageOptimizer } from 'vite-plugin-image-optimizer';
import legacy from '@vitejs/plugin-legacy';

export default defineConfig({
  build: {
    inject: true
  },
  plugins: [
    [injectHTML()],
    ViteImageOptimizer({
      dir: 'public/images',
      outDir: 'dist/images',
      png: {
        quality: 80,
      },
      jpeg: {
        quality: 80,
      },
      jpg: {
        quality: 80,
      },
      webp: {
        lossless: true,
      },
    }),
    legacy({
      targets: ['defaults', 'not IE 11']
    }),
  ],
});

目前vite-plugin-image-optimizer能正常将public/images中的图片压缩后输出到dist/images,但我还需要同时将这些图片转换为WebP格式并保存到同一路径,用于<picture>标签。请问能否通过配置该插件实现?如果不行,有没有不冲突的替代插件?

解决方案

1. 直接修改vite-plugin-image-optimizer配置实现

该插件本身支持生成WebP格式的并行输出,只需在配置中添加convertToWebp选项即可。同时注意原配置中injectHTML()被包裹在数组里是错误写法,会导致插件无法正常工作,需去掉外层数组。修改后的完整配置如下:

import { defineConfig } from 'vite';
import injectHTML from 'vite-plugin-html-inject';
import { ViteImageOptimizer } from 'vite-plugin-image-optimizer';
import legacy from '@vitejs/plugin-legacy';

export default defineConfig({
  build: {
    inject: true
  },
  plugins: [
    injectHTML(),
    ViteImageOptimizer({
      dir: 'public/images',
      outDir: 'dist/images',
      png: {
        quality: 80,
      },
      jpeg: {
        quality: 80,
      },
      jpg: {
        quality: 80,
      },
      webp: {
        lossless: true,
      },
      // 新增WebP转换配置
      convertToWebp: {
        quality: 80, // 自定义WebP压缩质量
        lossless: false // 根据需求设置是否无损压缩
      }
    }),
    legacy({
      targets: ['defaults', 'not IE 11']
    }),
  ],
});

添加convertToWebp后,插件会在压缩原格式图片的同时,自动将PNG/JPG/JPEG等格式转换为对应的WebP文件(例如image.png会生成压缩后的image.png和image.webp),并存入dist/images目录。

2. 替代插件方案(若上述配置不生效)

如果vite-plugin-image-optimizer的convertToWebp选项不符合需求,可以尝试使用vite-plugin-webp-generator插件,它专门用于生成WebP格式图片,且与现有插件冲突概率较低。

安装插件

npm install vite-plugin-webp-generator --save-dev

修改配置文件

import { defineConfig } from 'vite';
import injectHTML from 'vite-plugin-html-inject';
import { ViteImageOptimizer } from 'vite-plugin-image-optimizer';
import legacy from '@vitejs/plugin-legacy';
import webpGenerator from 'vite-plugin-webp-generator';

export default defineConfig({
  build: {
    inject: true
  },
  plugins: [
    injectHTML(),
    ViteImageOptimizer({
      dir: 'public/images',
      outDir: 'dist/images',
      png: {
        quality: 80,
      },
      jpeg: {
        quality: 80,
      },
      jpg: {
        quality: 80,
      },
      webp: {
        lossless: true,
      },
    }),
    webpGenerator({
      from: ['png', 'jpg', 'jpeg'], // 指定要转换的原图片格式
      dist: 'dist/images', // WebP文件输出目录
      quality: 80 // WebP压缩质量
    }),
    legacy({
      targets: ['defaults', 'not IE 11']
    }),
  ],
});

该插件会在构建时扫描指定格式的图片,生成对应的WebP文件到目标目录,与vite-plugin-image-optimizer的压缩功能互不干扰。

内容的提问来源于stack exchange,提问作者yanballas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 16:57:40