compression.ts 825 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import compression from 'vite-plugin-compression'
  2. import type { PluginOption } from 'vite'
  3. // 定义环境变量类型(可根据实际需要扩展)
  4. interface Env {
  5. VITE_BUILD_COMPRESS?: string
  6. }
  7. export default function createCompression(env: Env): PluginOption[] {
  8. const { VITE_BUILD_COMPRESS } = env
  9. const plugin: PluginOption[] = []
  10. if (VITE_BUILD_COMPRESS) {
  11. const compressList = VITE_BUILD_COMPRESS.split(',')
  12. if (compressList.includes('gzip')) {
  13. plugin.push(
  14. compression({
  15. ext: '.gz',
  16. deleteOriginFile: false
  17. })
  18. )
  19. }
  20. if (compressList.includes('brotli')) {
  21. plugin.push(
  22. compression({
  23. ext: '.br',
  24. algorithm: 'brotliCompress',
  25. deleteOriginFile: false
  26. })
  27. )
  28. }
  29. }
  30. return plugin
  31. }