Skip to content

πŸ“¦ Compression Image compression plugin based on squoosh-next

Notifications You must be signed in to change notification settings

unplugin/unplugin-imagemin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Feb 21, 2025
cda5675 Β· Feb 21, 2025
Dec 16, 2024
Nov 17, 2022
Feb 6, 2025
Feb 14, 2025
Dec 3, 2022
Feb 6, 2025
Nov 24, 2022
Nov 17, 2022
Sep 29, 2023
Nov 25, 2022
Nov 17, 2022
Dec 13, 2024
Nov 24, 2022
Jan 28, 2025
Feb 4, 2025
Feb 21, 2025
Feb 6, 2025
Sep 29, 2023
Sep 29, 2023
Jan 28, 2025
Nov 17, 2022

Repository files navigation

πŸ“¦πŸ“¦ unplugin Imagemin Picture compression

NPM version

Important

Tips: 1.0 goals unplugin-imagemin is preparing to release version 1.0, which will be released after achieving the following goals

  • Support all node versions by re-modifying the wasm syntax of squoosh
  • remove sharp deps
  • support compress publicDir images
  • support css compress image
  • Supports full cache mode
  • Support Node 22 and more
  • Type options
  • Supports farm, rsbuild, webpack, and other frameworks

Warning

New features and stability, compatibility and performance features are constantly being updated Recommended to use the latest version pnpm add unplugin-imagemin@latest -D

Warning

Since Google squoosh no longer maintains the node direction, This fock came out and revised some compatibility issues. Details squoosh-next

✨✨ Continuous iterative development in testing

✨ : unplugin-imagemin
βœ” : Process start with mode squoosh
βœ… : [test1.png] [12.39 MB] -> [102.54 KB]
βœ” : Process start with mode squoosh
βœ… : [test2.png] [16.38 MB] -> [76.79 KB]

🌈 Features

  • 🍰 Support png jpeg webp avif svg tiff Format
  • 🦾 High Performance based on squoosh
  • ✨ Multiple picture formats can be configured
  • πŸͺ Compress the code at build time
  • πŸ˜ƒ Caching Mechanism
  • 🌈 You can convert different picture types at build time

Squoosh && Svgo

Unplugin-imagemin supports two compression tools

Squoosh is an image compression web app that reduces image sizes through numerous formats. Squoosh with rust & wasm

Svgo Support compression of pictures in svg format

πŸ“¦ Installation

pnpm add unplugin-imagemin@latest -D

support vite and rollup

Basic
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import imagemin from 'unplugin-imagemin/vite';
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue(), imagemin()],
});


Advanced
iimport { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import imagemin from 'unplugin-imagemin/vite';
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    imagemin({
      // default true
      cache: false,
      // Default configuration options for compressing different pictures
      compress: {
        jpg: {
          quality: 10,
        },
        jpeg: {
          quality: 10,
        },
        png: {
          quality: 10,
        },
        webp: {
          quality: 10,
        },
      },
      conversion: [
        { from: 'jpeg', to: 'webp' },
        { from: 'png', to: 'webp' },
        { from: 'JPG', to: 'jpeg' },
      ],
    }),
  ],
});


🌸 DefaultConfiguration

Squoosh DefaultConfiguration

DefaultConfiguration see DefaultConfiguration

Plugin property configuration see configuration

export interface PluginOptions {
  /**
   * @description Picture compilation and conversion
   * @default []
   */
  conversion?: ConversionItemType[];
  /**
   * @description Whether to turn on caching
   * @default true
   */
  cache?: boolean;
  /**
   * @description Path to the cache file location
   * @default ./node_modules/.cache/unplugin-imagemin/.unplugin-imagemin-cache
   */
  cacheLocation?: string;
  /**
   * @description Compilation attribute
   * @default CompressTypeOptions
   */
  compress?: CompressTypeOptions;
}