Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

unplugin/unplugin-imagemin

Open more actions menu

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

About

📦 Compression Image compression plugin based on squoosh-next

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 8

Morty Proxy This is a proxified and sanitized view of the page, visit original site.