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.

90 lines
2.5 KiB

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