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.

83 lines
2.2 KiB

5 months ago
  1. import {defineConfig} from "vite";
  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 viteCompression from 'vite-plugin-compression';
  6. import { resolve } from 'path';
  7. const Timestamp = new Date().getTime();
  8. export default defineConfig({
  9. base: "./",
  10. envPrefix:"FT_",
  11. build: {
  12. sourcemap: false,
  13. rollupOptions: {
  14. output: {
  15. manualChunks(id) {
  16. if (id.includes('node_modules')) {
  17. return id.toString().split('node_modules/')[1].split('/')[0].toString();
  18. }
  19. },
  20. chunkFileNames: chunkInfo => {
  21. const facadeModuleId = chunkInfo.facadeModuleId
  22. ? chunkInfo.facadeModuleId.split('/')
  23. : [];
  24. const fileName = facadeModuleId.slice(-2)[0] || '[name]';
  25. return `js/${fileName}/[name].[hash].${Timestamp}.js`;
  26. }
  27. }
  28. }
  29. },
  30. plugins: [
  31. vue(),
  32. AutoImport({
  33. imports: ['vue', 'vue-router', {
  34. 'vue': ['withModifiers']
  35. },
  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. viteCompression({
  48. verbose: true,
  49. disable: false,
  50. threshold: 10240,
  51. algorithm: 'gzip',
  52. ext: '.gz'
  53. })
  54. ],
  55. resolve: {
  56. alias: {
  57. '@': resolve(__dirname, 'src'),
  58. apis: resolve(__dirname, 'src/apis'),
  59. assets: resolve(__dirname, 'src/assets'),
  60. components: resolve(__dirname, 'src/components'),
  61. hooks: resolve(__dirname, 'src/hooks'),
  62. libs: resolve(__dirname, 'src/libs'),
  63. store: resolve(__dirname, 'src/store'),
  64. views: resolve(__dirname, 'src/views'),
  65. }
  66. },
  67. // 本地化配置
  68. server: {
  69. open: true,
  70. hmr: true,
  71. port: 3000,
  72. host: '0.0.0.0',
  73. proxy: {
  74. '/api': {
  75. target: 'http://localhost:8080',
  76. // secure: false,
  77. changeOrigin: true, //是否跨域
  78. rewrite: path => path.replace(/^\/api/, 'api')
  79. }
  80. }
  81. }
  82. });