vite-plugin-compress

raw JSON →
2.1.1 verified Mon Apr 27 auth: no javascript

Vite plugin to compress bundle and assets using Brotli, SVGO, and imagemin. Current stable version is 2.1.1, with a release cadence of major and minor patches. Key differentiators: compression of Vite-generated assets and public folder files, SVG and PNG optimization, respect for MTU threshold (1501 bytes), and compatibility with vite-ssr. Alternatives include rollup-plugin-compress but this is Vite-native.

error Error: The plugin 'vite-plugin-compress' doesn't appear to be a valid Vite plugin.
cause Using named import { compress } instead of default import in v2.
fix
Use: import compress from 'vite-plugin-compress'
error [vite-plugin-compress] Could not find module 'imagemin-pngquant'
cause Missing peer dependency for PNG optimization.
fix
Install imagemin-pngquant: npm install imagemin-pngquant
error TypeError: compress is not a function
cause Importing as a named export when using CommonJS require in ESM context.
fix
Use default import: import compress from 'vite-plugin-compress'
error Error: Cannot find module 'vite-plugin-compress'
cause Package not installed or not added to package.json.
fix
Run: npm install vite-plugin-compress
breaking Default exported function changed from named export to default export in v2
fix Use import compress from 'vite-plugin-compress' instead of import { compress } from 'vite-plugin-compress'
gotcha Files smaller than threshold (default 1501 bytes) are not compressed; this may cause confusion if expecting all files to be compressed.
fix Set threshold: 0 to compress all files regardless of size
deprecated The 'brotli' option defaults to true; setting it to false disables Brotli compression but may leave files uncompressed.
fix Explicitly set brotli: true if you want Brotli compression (no change needed), or set brotli: false if you want to disable it
gotcha SVG optimization by default removes dimensions; may break layout if relying on viewBox and dimensions.
fix Override svgo plugins: [{ removeDimensions: false }]
gotcha PNG optimization uses imagemin-pngquant; may produce banding if quality settings are too aggressive.
fix Set pngquant quality range e.g. quality: [0.6, 0.8] for better results
gotcha Plugin compresses both Vite-generated assets and public folder files; public files are compressed in-place which may affect development workflow.
fix Exclude specific public files using the 'exclude' option
breaking v1.x and v2.x are incompatible due to import pattern change; migration required.
fix Update import statement: from 'import { compress }' to 'import compress'
npm install vite-plugin-compress
yarn add vite-plugin-compress
pnpm add vite-plugin-compress

Shows full configuration with all options for vite-plugin-compress, including quality, threshold, exclude, extensions, svgo, pngquant, brotli, and verbose.

// vite.config.ts
import compress from 'vite-plugin-compress'

export default {
  plugins: [
    compress({
      quality: 11,
      threshold: 1501,
      exclude: ['ssr-manifest.json'],
      extensions: ['.html', '.js', '.css', '.svg', '.json'],
      svgo: { plugins: [{ removeViewBox: false, removeDimensions: true }] },
      pngquant: { quality: [0.6, 0.8] },
      brotli: true,
      verbose: true
    }),
  ],
}