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.

91 lines
2.5 KiB

5 months ago
5 months ago
5 months ago
5 months ago
  1. import { resolve } from 'node:path'
  2. import vue from '@vitejs/plugin-vue'
  3. import AutoImport from 'unplugin-auto-import/vite'
  4. import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
  5. import { defineConfig } from 'vite'
  6. import viteCompression from 'vite-plugin-compression'
  7. import eslintPlugin from 'vite-plugin-eslint'
  8. const Timestamp = new Date().getTime()
  9. export default defineConfig({
  10. base: './',
  11. envPrefix: 'FT_',
  12. esbuild: {
  13. drop: process.env.NODE_ENV === 'production' ? ['console'] : [],
  14. },
  15. build: {
  16. sourcemap: false,
  17. outDir: 'dist/web',
  18. rollupOptions: {
  19. output: {
  20. manualChunks(id) {
  21. if (id.includes('node_modules')) {
  22. return id.toString().split('node_modules/')[1].split('/')[0].toString()
  23. }
  24. },
  25. chunkFileNames: (chunkInfo) => {
  26. const facadeModuleId = chunkInfo.facadeModuleId
  27. ? chunkInfo.facadeModuleId.split('/')
  28. : []
  29. const fileName = facadeModuleId.slice(-2)[0] || '[name]'
  30. return `js/${fileName}/[name].[hash].${Timestamp}.js`
  31. },
  32. },
  33. },
  34. },
  35. plugins: [
  36. vue(),
  37. AutoImport({
  38. imports: ['vue', 'vue-router', {
  39. vue: ['withModifiers'],
  40. }, {
  41. from: 'element-plus/es',
  42. imports: ['TabPaneName'],
  43. type: true,
  44. }],
  45. dts: true,
  46. eslintrc: {
  47. enabled: true,
  48. },
  49. resolvers: [ElementPlusResolver({ importStyle: 'sass' })],
  50. }),
  51. eslintPlugin({
  52. cache: false, // 禁用缓存,以确保每次修改后都能及时生效
  53. }),
  54. viteCompression({
  55. verbose: true,
  56. disable: false,
  57. threshold: 10240,
  58. algorithm: 'gzip',
  59. ext: '.gz',
  60. }),
  61. ],
  62. resolve: {
  63. alias: {
  64. '@': resolve(__dirname, './src'),
  65. 'apis': resolve(__dirname, 'src/apis'),
  66. 'assets': resolve(__dirname, 'src/assets'),
  67. 'components': resolve(__dirname, 'src/components'),
  68. 'hooks': resolve(__dirname, 'src/hooks'),
  69. 'libs': resolve(__dirname, 'src/libs'),
  70. 'stores': resolve(__dirname, 'src/stores'),
  71. 'views': resolve(__dirname, 'src/views'),
  72. },
  73. },
  74. // 本地化配置
  75. server: {
  76. // open: true,
  77. hmr: true,
  78. port: 3000,
  79. host: '0.0.0.0',
  80. proxy: {
  81. '/api': {
  82. // target: 'http://192.168.1.199:8080',
  83. target: 'http://192.168.1.200:8080',
  84. // secure: false,
  85. changeOrigin: true, // 是否跨域
  86. rewrite: path => path.replace(/^\/api/, 'api'),
  87. },
  88. },
  89. },
  90. })