compression.ts 892 B

123456789101112131415161718192021222324252627282930
  1. import { PluginOption } from 'vite'
  2. import viteCompression from 'vite-plugin-compression'
  3. /**
  4. * @description 根据 compress 配置,生成不同的压缩规则
  5. * @param viteEnv
  6. */
  7. export default (viteEnv: ViteEnv): PluginOption | PluginOption[] => {
  8. const { VITE_BUILD_COMPRESS = 'none', VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE } = viteEnv
  9. const compressList = VITE_BUILD_COMPRESS.split(',')
  10. const plugins: PluginOption[] = []
  11. if (compressList.includes('gzip')) {
  12. plugins.push(
  13. viteCompression({
  14. ext: '.gz',
  15. algorithm: 'gzip',
  16. deleteOriginFile: VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE
  17. })
  18. )
  19. }
  20. if (compressList.includes('brotli')) {
  21. plugins.push(
  22. viteCompression({
  23. ext: '.br',
  24. algorithm: 'brotliCompress',
  25. deleteOriginFile: VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE
  26. })
  27. )
  28. }
  29. return plugins
  30. }