You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
1.9 KiB

3 weeks ago
3 weeks ago
  1. import { defineConfig, loadEnv } from 'vite'
  2. import vue from '@vitejs/plugin-vue'
  3. import { lazyImport, VxeResolver } from 'vite-plugin-lazy-import'
  4. import legacy from '@vitejs/plugin-legacy'
  5. import path from 'path'
  6. import { visualizer } from 'rollup-plugin-visualizer'
  7. // https://vite.dev/config/
  8. export default defineConfig(({ mode }) => {
  9. const env = loadEnv(mode, process.cwd())
  10. console.log('当前环境:', mode)
  11. console.log('当前环境变量:', env)
  12. return {
  13. esbuild: {
  14. supported: {
  15. bigint: true
  16. },
  17. treeShaking: true
  18. },
  19. plugins: [
  20. vue(),
  21. visualizer({
  22. open: true, // 打包完成后自动展示
  23. gzipSize: true, // 显示gzip压缩后的大小
  24. brotliSize: true // 显示brotli压缩后的大小
  25. }),
  26. legacy({
  27. targets: ['defaults', 'not IE 11', 'chrome >=73'],
  28. modernPolyfills: true
  29. }),
  30. lazyImport({
  31. resolvers: [
  32. VxeResolver({
  33. libraryName: 'vxe-table'
  34. }),
  35. VxeResolver({
  36. libraryName: 'vxe-pc-ui'
  37. })
  38. ]
  39. })
  40. ],
  41. server: {
  42. host: true // 允许外部设备访问
  43. },
  44. resolve: {
  45. alias: {
  46. '@': path.resolve(__dirname, './src')
  47. }
  48. },
  49. base: process.env.NODE_ENV === 'production' ? './' : '/',
  50. build: {
  51. sourcemap: false, // 关闭 sourcemap
  52. minify: 'terser',
  53. terserOptions: {
  54. compress: {
  55. drop_console: true, // 生产环境去除console
  56. drop_debugger: true // 生产环境去除 debugger
  57. }
  58. },
  59. rollupOptions: {
  60. output: {
  61. manualChunks: {
  62. echarts: ['echarts'],
  63. xlsx: ['xlsx'],
  64. lodash: ['lodash'],
  65. vue: ['vue', 'vue-router', 'pinia'],
  66. elementPlus: ['element-plus']
  67. }
  68. }
  69. }
  70. }
  71. }
  72. })