vite.config.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import { defineConfig, loadEnv, type ConfigEnv, type UserConfig } from 'vite'
  2. import { initVitePlugins } from './plugins'
  3. import { initProxy } from './plugins/proxy'
  4. import { resolve } from 'path'
  5. import { wrapperEnv } from './getEnv'
  6. const pathSrc = resolve(__dirname, 'src')
  7. // https://vite.dev/config/
  8. export default defineConfig(({ mode, command }: ConfigEnv): UserConfig => {
  9. const root = process.cwd()
  10. const env = loadEnv(mode, root)
  11. const viteEnv = wrapperEnv(env)
  12. return {
  13. server: {
  14. port: viteEnv.VITE_PORT,
  15. open: viteEnv.VITE_OPEN,
  16. proxy: initProxy(viteEnv.VITE_PROXY)
  17. },
  18. resolve: {
  19. alias: {
  20. '@': pathSrc
  21. }
  22. },
  23. plugins: initVitePlugins(viteEnv, command === 'build'),
  24. build: {
  25. outDir: 'dist',
  26. minify: 'esbuild',
  27. sourcemap: false
  28. },
  29. css: {
  30. preprocessorOptions: {
  31. scss: {
  32. additionalData: `@use "@/assets/styles/variables.scss" as *;`
  33. }
  34. }
  35. },
  36. optimizeDeps: {
  37. include: [
  38. 'vue',
  39. 'vue-router',
  40. 'pinia',
  41. 'axios',
  42. '@vueuse/core',
  43. 'element-plus',
  44. '@element-plus/icons-vue',
  45. 'element-plus/es',
  46. 'element-plus/es/components/base/style/css',
  47. 'element-plus/es/components/config-provider/style/css',
  48. 'element-plus/es/components/button/style/css',
  49. 'element-plus/es/components/form/style/css',
  50. 'element-plus/es/components/form-item/style/css',
  51. 'element-plus/es/components/input/style/css',
  52. 'element-plus/es/components/container/style/css',
  53. 'element-plus/es/components/footer/style/css',
  54. 'element-plus/es/components/main/style/css',
  55. 'element-plus/es/components/header/style/css',
  56. 'element-plus/es/components/message/style/css',
  57. 'element-plus/es/components/menu/style/css',
  58. 'element-plus/es/components/sub-menu/style/css',
  59. 'element-plus/es/components/menu-item/style/css'
  60. ]
  61. }
  62. }
  63. })