智慧水务管理系统 - 精河县供水工程综合管理平台

vite.config.ts 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import { defineConfig } from 'vite'
  2. import vue from '@vitejs/plugin-vue'
  3. import AutoImport from 'unplugin-auto-import/vite'
  4. import Components from 'unplugin-vue-components/vite'
  5. import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
  6. import compression from 'vite-plugin-compression'
  7. // https://vitejs.dev/config/
  8. export default defineConfig({
  9. plugins: [
  10. vue(),
  11. AutoImport({
  12. // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等
  13. imports: ['vue', 'vue-router', 'pinia'],
  14. // 自动导入 Element Plus 相关函数,如:ElMessage, ElMessageBox 等
  15. resolvers: [ElementPlusResolver()],
  16. dts: 'src/auto-imports.d.ts',
  17. }),
  18. Components({
  19. // 自动导入 Element Plus 组件
  20. resolvers: [ElementPlusResolver()],
  21. dts: 'src/components.d.ts',
  22. }),
  23. // 开启 Gzip 压缩
  24. compression({
  25. verbose: true,
  26. disable: false,
  27. threshold: 10240,
  28. algorithm: 'gzip',
  29. ext: '.gz',
  30. }),
  31. ],
  32. resolve: {
  33. alias: {
  34. '@': '/src',
  35. '@components': '/src/components',
  36. '@views': '/src/views',
  37. '@api': '/src/api',
  38. '@utils': '/src/utils',
  39. '@assets': '/src/assets',
  40. },
  41. },
  42. css: {
  43. preprocessorOptions: {
  44. scss: {
  45. additionalData: `@import "@/assets/style.scss";`,
  46. },
  47. },
  48. },
  49. server: {
  50. port: 3000,
  51. open: true,
  52. cors: true,
  53. proxy: {
  54. '/api': {
  55. target: 'http://localhost:8080',
  56. changeOrigin: true,
  57. rewrite: (path) => path.replace(/^\/api/, ''),
  58. },
  59. },
  60. },
  61. build: {
  62. // 生产环境构建配置
  63. target: 'es2015',
  64. outDir: 'dist',
  65. assetsDir: 'assets',
  66. minify: 'terser',
  67. terserOptions: {
  68. compress: {
  69. drop_console: true,
  70. drop_debugger: true,
  71. },
  72. },
  73. rollupOptions: {
  74. output: {
  75. chunkFileNames: 'assets/js/[name]-[hash].js',
  76. entryFileNames: 'assets/js/[name]-[hash].js',
  77. assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',
  78. manualChunks: {
  79. 'element-plus': ['element-plus'],
  80. 'vue-vendor': ['vue', 'vue-router', 'pinia'],
  81. },
  82. },
  83. },
  84. },
  85. })