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.

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