$ yarn add vite-plugin-compression2 -D
# or
$ npm install vite-plugin-compression2 -D
import { defineConfig } from 'vite'
import { compression } from 'vite-plugin-compression2'
export default defineConfig({
plugins: [
// ...your plugins
compression()
]
})
import { compression, defineAlgorithm } from 'vite-plugin-compression2'
export default defineConfig({
plugins: [
compression({
algorithms: [
'gzip',
'brotliCompress',
defineAlgorithm('deflate', { level: 9 })
]
})
]
})
import { compression, defineAlgorithm } from 'vite-plugin-compression2'
export default defineConfig({
plugins: [
compression({
algorithms: [
defineAlgorithm(
async (buffer, options) => {
// Your custom compression logic
return compressedBuffer
},
{ customOption: true }
)
]
})
]
})
import { compression, tarball } from 'vite-plugin-compression2'
export default defineConfig({
plugins: [
compression(),
// If you want to create a tarball archive, use tarball plugin after compression
tarball({ dest: './dist/archive' })
]
})
params | type | default | description |
---|---|---|---|
include |
string | RegExp | Array<string | RegExp> |
/\.(html|xml|css|json|js|mjs|svg|yaml|yml|toml)$/ |
Include all assets matching any of these conditions. |
exclude |
string | RegExp | Array<string | RegExp> |
- |
Exclude all assets matching any of these conditions. |
threshold |
number |
0 |
Only assets bigger than this size are processed (in bytes) |
algorithms |
Algorithms |
['gzip', 'brotliCompress'] |
Array of compression algorithms or defineAlgorithm results |
filename |
string | function |
[path][base].gz or [path][base]. br If algorithm is zstd be [path][base].zst |
The target asset filename pattern |
deleteOriginalAssets |
boolean |
false |
Whether to delete the original assets or not |
skipIfLargerOrEqual |
boolean |
true |
Whether to skip the compression if the result is larger than or equal to the original file |
params | type | default | description |
---|---|---|---|
dest |
string |
- |
Destination directory for tarball |
Define a compression algorithm with options.
Parameters:
algorithm
: Algorithm name ('gzip' | 'brotliCompress' | 'deflate' | 'deflateRaw' | 'zstd'
) or custom functionoptions
: Compression options for the algorithm
Returns: [algorithm, options]
tuple
Examples:
// Built-in algorithm with default options
defineAlgorithm('gzip')
// Built-in algorithm with custom options
defineAlgorithm('gzip', { level: 9 })
// Brotli with custom quality
defineAlgorithm('brotliCompress', {
params: {
[require('zlib').constants.BROTLI_PARAM_QUALITY]: 11
}
})
// Custom algorithm function
defineAlgorithm(
async (buffer, options) => {
// Your compression implementation
return compressedBuffer
},
{ customOption: 'value' }
)
- gzip: Standard gzip compression
- brotliCompress: Brotli compression (better compression ratio)
- deflate: Deflate compression
- deflateRaw: Raw deflate compression
- zstd: Zstandard compression with excellent speed/ratio balance (
.zst
extension) - Requires Node.js >= 22.15.0 or >= 23.8.0 - Custom Function: Your own compression algorithm
The algorithms
option accepts:
type Algorithms =
| Algorithm[] // ['gzip', 'brotliCompress']
| DefineAlgorithmResult[] // [defineAlgorithm('gzip'), ...]
| (Algorithm | DefineAlgorithmResult)[] // Mixed array
If you're upgrading from v1.x, please check the Migration Guide.
compression({
algorithms: ['gzip']
})
compression({
algorithms: [
defineAlgorithm('gzip', { level: 9 }),
defineAlgorithm('brotliCompress', {
params: {
[require('zlib').constants.BROTLI_PARAM_QUALITY]: 11
}
})
]
})
compression({
algorithms: ['gzip'],
filename: '[path][base].[hash].gz'
})
compression({
algorithms: ['gzip'],
deleteOriginalAssets: true
})
compression({
algorithms: ['gzip'],
threshold: 1000 // Only compress files larger than 1KB
})
- If you want to analyze your bundle assets, try vite-bundle-analyzer
tarball
optiondest
means to generate a tarball somewheretarball
is based on theustar
format. It should be compatible with all popular tar distributions (gnutar, bsdtar etc)
- gzip, brotliCompress, deflate, deflateRaw: All Node.js versions supported
- zstd: Requires Node.js >= 22.15.0 or >= 23.8.0
Note: If you try to use zstd compression on an unsupported Node.js version, the plugin will throw a helpful error message indicating the required version.