vite.config.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import { fileURLToPath, URL } from 'node:url'
  2. import { defineConfig } from 'vite'
  3. import vue from '@vitejs/plugin-vue'
  4. import vueJsx from '@vitejs/plugin-vue-jsx'
  5. import qiankun from 'vite-plugin-qiankun'
  6. // https://vite.dev/config/
  7. export default defineConfig(({ mode }) => {
  8. const chunkName = ['lodash-es', 'element-plus', '@form-create/designer']
  9. // 根据环境变量设置 base
  10. const base = mode === 'release' ? '/saas/form/' : '/'
  11. return {
  12. plugins: [
  13. vue(),
  14. vueJsx(),
  15. qiankun('curstom-form', {
  16. useDevMode: true, // 开发模式下使用热更新
  17. }),
  18. ],
  19. resolve: {
  20. alias: {
  21. '@': fileURLToPath(new URL('./src', import.meta.url)),
  22. },
  23. },
  24. server: {
  25. port: 5173,
  26. cors: true,
  27. },
  28. base,
  29. build: {
  30. target: 'esnext',
  31. outDir: 'form',
  32. chunkSizeWarningLimit: 1000,
  33. terserOptions: {
  34. compress: {
  35. drop_console: true,
  36. drop_debugger: true,
  37. },
  38. },
  39. rollupOptions: {
  40. output: {
  41. assetFileNames: 'static/[name].[hash].[ext]', // 确保静态资源路径正确
  42. chunkFileNames: () => {
  43. return 'static/[name].[hash].js'
  44. },
  45. entryFileNames: 'static/[name].[hash].js',
  46. manualChunks(id: string) {
  47. if (id.includes('node_modules')) {
  48. const name = chunkName.find((item) => id.includes(item))
  49. if (name) return name
  50. return id.toString().split('node_modules/')[1].split('/')[0].toString()
  51. }
  52. },
  53. },
  54. },
  55. },
  56. }
  57. })