vite.config.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { defineConfig } from 'vite'
  2. import vue from '@vitejs/plugin-vue'
  3. import { quasar, transformAssetUrls } from '@quasar/vite-plugin'
  4. import monacoEditorPluginModule from 'vite-plugin-monaco-editor'
  5. import type { UserConfig } from 'vite'
  6. const isObjectWithDefaultFunction = (module: unknown): module is { default: typeof monacoEditorPluginModule } => (
  7. module != null &&
  8. typeof module === 'object' &&
  9. 'default' in module &&
  10. typeof module.default === 'function'
  11. )
  12. const monacoEditorPlugin = isObjectWithDefaultFunction(monacoEditorPluginModule)
  13. ? monacoEditorPluginModule.default
  14. : monacoEditorPluginModule
  15. // https://vitejs.dev/config/
  16. export default defineConfig({
  17. plugins: [
  18. vue({
  19. template: { transformAssetUrls }
  20. }),
  21. quasar({
  22. sassVariables: 'src/styles/quasar-variables.scss'
  23. }),
  24. monacoEditorPlugin({
  25. publicPath: 'monaco-editor',
  26. customWorkers: [
  27. {
  28. label: 'python',
  29. entry: 'monaco-editor/esm/vs/basic-languages/python/python.contribution'
  30. }
  31. ]
  32. })
  33. ],
  34. resolve: {
  35. alias: {
  36. '@': '/src'
  37. }
  38. },
  39. server: {
  40. port: 3000,
  41. open: true,
  42. proxy: {
  43. '/api': {
  44. target: 'http://localhost:8000',
  45. changeOrigin: true,
  46. rewrite: (path: string) => path.replace(/^\/api/, '/api/')
  47. }
  48. }
  49. },
  50. build: {
  51. target: 'es2015',
  52. chunkSizeWarningLimit: 2000,
  53. rollupOptions: {
  54. output: {
  55. manualChunks: {
  56. 'vendor': ['vue', 'vue-router', 'pinia', 'quasar'],
  57. 'echarts': ['echarts']
  58. }
  59. }
  60. }
  61. }
  62. } as UserConfig)