vite.config.ts 1.5 KB

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