vite.config.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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 === 'test' ? '/saas/form/' : '/form'
  11. console.log('base:', base)
  12. return {
  13. plugins: [
  14. vue(),
  15. vueJsx(),
  16. qiankun('curstom-form', {
  17. useDevMode: true, // 开发模式下使用热更新
  18. }),
  19. ],
  20. resolve: {
  21. alias: {
  22. '@': fileURLToPath(new URL('./src', import.meta.url)),
  23. },
  24. },
  25. server: {
  26. port: 5173,
  27. cors: true,
  28. },
  29. base,
  30. build: {
  31. target: 'esnext',
  32. outDir: 'form',
  33. chunkSizeWarningLimit: 1000,
  34. terserOptions: {
  35. compress: {
  36. drop_console: true,
  37. drop_debugger: true,
  38. },
  39. },
  40. rollupOptions: {
  41. output: {
  42. assetFileNames: 'static/[name].[hash].[ext]', // 确保静态资源路径正确
  43. chunkFileNames: () => {
  44. return 'static/[name].[hash].js'
  45. },
  46. entryFileNames: 'static/[name].[hash].js',
  47. manualChunks(id: string) {
  48. if (id.includes('node_modules')) {
  49. const name = chunkName.find((item) => id.includes(item))
  50. if (name) return name
  51. return id.toString().split('node_modules/')[1].split('/')[0].toString()
  52. }
  53. },
  54. },
  55. },
  56. },
  57. }
  58. })