vite.config.ts 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import path from 'path'
  2. import type { PluginOption } from 'vite'
  3. import { defineConfig, loadEnv } from 'vite'
  4. import vue from '@vitejs/plugin-vue'
  5. import { VitePWA } from 'vite-plugin-pwa'
  6. import viteImagemin from 'vite-plugin-imagemin'
  7. import { createHtmlPlugin } from 'vite-plugin-html'
  8. function setupPlugins(env: ImportMetaEnv): PluginOption[] {
  9. return [
  10. vue(),
  11. viteImagemin({
  12. gifsicle: {
  13. optimizationLevel: 7,
  14. interlaced: false
  15. },
  16. optipng: false,
  17. mozjpeg: {
  18. quality: 80
  19. },
  20. pngquant: {
  21. quality: [0.5, 0.9],
  22. speed: 1
  23. },
  24. svgo: {
  25. plugins: [
  26. {
  27. name: 'removeViewBox'
  28. },
  29. {
  30. name: 'removeEmptyAttrs',
  31. active: false
  32. }
  33. ]
  34. },
  35. webp: false
  36. }),
  37. env.VITE_GLOB_APP_PWA === 'true' &&
  38. VitePWA({
  39. injectRegister: 'auto',
  40. manifest: {
  41. name: 'chatGPT',
  42. short_name: 'chatGPT',
  43. icons: [
  44. { src: 'pwa-192x192.png', sizes: '192x192', type: 'image/png' },
  45. { src: 'pwa-512x512.png', sizes: '512x512', type: 'image/png' }
  46. ]
  47. }
  48. })
  49. ]
  50. }
  51. export default defineConfig(env => {
  52. const viteEnv = loadEnv(env.mode, process.cwd()) as unknown as ImportMetaEnv
  53. return {
  54. base: viteEnv.VITE_GLOB_APP_PUBLIC_PATH,
  55. resolve: {
  56. alias: {
  57. '@': path.resolve(process.cwd(), 'src')
  58. }
  59. },
  60. plugins: [
  61. ...setupPlugins(viteEnv),
  62. createHtmlPlugin({
  63. inject: {
  64. data: {
  65. baseUrl: viteEnv.VITE_GLOB_APP_PUBLIC_PATH
  66. }
  67. }
  68. })
  69. ],
  70. server: {
  71. host: '0.0.0.0',
  72. port: 5004,
  73. open: false
  74. },
  75. css: {
  76. preprocessorOptions: {
  77. less: {
  78. javascriptEnabled: true,
  79. additionalData: '@import "@/styles/common.less";'
  80. }
  81. }
  82. },
  83. build: {
  84. outDir: viteEnv.VITE_ORG_MODE === 'true' ? 'dist-org' : 'dist',
  85. reportCompressedSize: false,
  86. sourcemap: false,
  87. commonjsOptions: {
  88. ignoreTryCatch: false
  89. }
  90. }
  91. }
  92. })