vite.config.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import { defineConfig, ConfigEnv } from 'vite'
  2. import vue from '@vitejs/plugin-vue'
  3. import { resolve } from "path";
  4. import AutoImport from 'unplugin-auto-import/vite'
  5. import Components from 'unplugin-vue-components/vite'
  6. import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
  7. import vueSetupExtend from 'vite-plugin-vue-setup-extend-plus'; // setup语法糖设置name
  8. import viteCompression from "vite-plugin-compression"; //开启gzip打包压缩
  9. // @ts-ignore
  10. export default defineConfig((mode: ConfigEnv) => {
  11. return {
  12. plugins: [vue(),
  13. vueSetupExtend(),
  14. viteCompression()
  15. ],
  16. root: process.cwd(),
  17. resolve: {
  18. alias: {
  19. "@": resolve(__dirname, "./src"),
  20. "components": resolve(__dirname, "./src/components"),
  21. "api": resolve(__dirname, "./src/api"),
  22. },
  23. },
  24. base: mode.command === 'serve' ? './' : '/',
  25. hmr: true,
  26. server: {
  27. host: '0.0.0.0',
  28. port: 8113,
  29. open: true,
  30. strictPort: false,
  31. // proxy: {}
  32. },
  33. build: {
  34. outDir: 'dist',
  35. sourcemap: false,
  36. chunkSizeWarningLimit: 1500,
  37. rollupOptions: {
  38. output: {
  39. entryFileNames: `assets/[name].[hash].js`,
  40. chunkFileNames: `assets/[name].[hash].js`,
  41. assetFileNames: `assets/[name].[hash].[ext]`,
  42. compact: true,
  43. manualChunks: {
  44. vue: ['vue', 'vue-router', 'pinia']
  45. },
  46. },
  47. },
  48. minify: 'terser',
  49. terserOptions: {
  50. //生产环境时移除console和debugger
  51. compress: {
  52. drop_console: false,
  53. drop_debugger: true
  54. }
  55. }
  56. },
  57. css: { preprocessorOptions: { css: { charset: false } } },
  58. }
  59. })