Skip to content

compressAssets

在 Vite 构建完成后自动压缩输出目录中的文件,支持 gzip 和 brotli 两种压缩算法,支持并发压缩和压缩报告生成。

导入

typescript
import { compressAssets } from '@meng-xi/vite-plugin'
// 或子模块导入
import { compressAssets } from '@meng-xi/vite-plugin/plugins/compress/compress-assets'

快速开始

typescript
import { defineConfig } from 'vite'
import { compressAssets } from '@meng-xi/vite-plugin'

export default defineConfig({
  plugins: [compressAssets()]
})

配置选项

选项类型默认值说明
algorithm'gzip' | 'brotli' | 'both''gzip'压缩算法
thresholdnumber1024最小压缩阈值(字节)
deleteOriginalFilebooleanfalse压缩后是否删除原始文件

继承 BasePluginOptionsenabledverboseerrorStrategy

高级选项

选项类型默认值说明
includeExtensionsstring[]['.js', '.css', '.html', '.svg', '.json', '.xml', '.txt']需要压缩的文件扩展名
excludeExtensionsstring[][]需要排除的文件扩展名
excludePathsstring[][]需要排除的路径前缀
compressionLevelnumber9gzip 压缩级别(1-9)
brotliQualitynumber11brotli 压缩质量(1-11)
reportOutputstring | false'compress-report.json'压缩报告输出路径,false 不生成
parallelLimitnumber10并发压缩最大文件数

类型导出

CompressStats

单个文件的压缩统计信息。

属性类型说明
filestring原始文件路径
originalSizenumber原始文件大小(字节)
compressedSizenumber压缩后文件大小(字节)
rationumber压缩率百分比(0-100)
algorithm'gzip' | 'brotli'使用的压缩算法

CompressSummary

压缩操作的汇总统计信息。

属性类型说明
totalFilesnumber压缩的文件总数
totalOriginalSizenumber所有文件的原始大小总和
totalCompressedSizenumber所有文件的压缩后大小总和
totalRationumber总体压缩率百分比
gzipFilesnumber使用 gzip 压缩的文件数量
brotliFilesnumber使用 brotli 压缩的文件数量
executionTimenumber压缩操作总耗时(毫秒)
statsCompressStats[]每个文件的详细压缩统计

示例

使用 brotli 压缩

typescript
compressAssets({ algorithm: 'brotli' })

同时生成 gzip 和 brotli

typescript
compressAssets({
  algorithm: 'both',
  threshold: 2048,
  compressionLevel: 9,
  brotliQuality: 11
})

压缩后删除原始文件

typescript
compressAssets({
  deleteOriginalFile: true,
  reportOutput: 'compress-report.json'
})

自定义文件过滤

typescript
compressAssets({
  includeExtensions: ['.js', '.css'],
  excludePaths: ['assets/images'],
  parallelLimit: 5
})

注意事项

  • 使用 enforce: 'post' 确保在构建产物写入完成后执行
  • algorithm: 'both' 时会同时生成 .gz.br 文件
  • threshold 设为 0 将压缩所有文件(不推荐,极小文件压缩后可能更大)
  • deleteOriginalFile: true 时仅保留压缩版本,需确保服务器支持对应的压缩格式
  • 压缩报告包含每个文件的压缩率和总体统计,便于优化配置
  • 并发压缩通过 parallelLimit 控制资源占用,默认 10 个并发

Released under the MIT License.