electron.vite.config.ts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import { resolve } from 'path'
  2. import { defineConfig } from 'electron-vite'
  3. import vue from '@vitejs/plugin-vue'
  4. import AutoImport from 'unplugin-auto-import/vite'
  5. import Components from 'unplugin-vue-components/vite'
  6. import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
  7. import tailwindcss from '@tailwindcss/vite'
  8. import IconsResolver from 'unplugin-icons/resolver'
  9. export default defineConfig({
  10. main: {
  11. build: {
  12. rollupOptions: {
  13. input: {
  14. index: resolve(__dirname, 'electron/main/index.ts')
  15. }
  16. }
  17. }
  18. },
  19. preload: {
  20. build: {
  21. rollupOptions: {
  22. input: {
  23. index: resolve(__dirname, 'electron/preload/index.ts')
  24. }
  25. }
  26. }
  27. },
  28. renderer: {
  29. server: {
  30. cors: true,
  31. proxy: {
  32. '/websocket': {
  33. target: 'ws://localhost:8899/',
  34. changeOrigin: true,
  35. ws: true
  36. }
  37. }
  38. },
  39. root: '.',
  40. build: {
  41. rollupOptions: {
  42. input: {
  43. index: resolve(__dirname, 'index.html')
  44. }
  45. }
  46. },
  47. resolve: {
  48. alias: {
  49. '@': resolve('src')
  50. }
  51. },
  52. plugins: [
  53. vue(),
  54. tailwindcss(),
  55. AutoImport({
  56. resolvers: [
  57. // 自动导入 Element Plus 相关函数,如:ElMessage, ElMessageBox... (带样式)
  58. ElementPlusResolver(),
  59. // 自动导入图标组件
  60. IconsResolver({})
  61. ],
  62. imports: ['vue', 'vue-router', '@vueuse/core'],
  63. dts: 'src/types/auto-imports.d.ts' // 自动生成 auto-imports.d.ts
  64. }),
  65. Components({
  66. resolvers: [
  67. ElementPlusResolver(),
  68. IconsResolver({
  69. // 图标库,其他图标库 https://icon-sets.iconify.design/
  70. enabledCollections: ['ep']
  71. })
  72. ],
  73. dirs: ['src/components', 'src/**/components', 'src/**/components/**/*.vue'],
  74. dts: 'src/types/auto-components.d.ts' // 自动生成 components.d.ts
  75. })
  76. ],
  77. optimizeDeps: {
  78. include: [
  79. 'vue',
  80. 'vue-router',
  81. 'axios',
  82. '@vueuse/core',
  83. 'nprogress',
  84. 'element-plus/es/components/tooltip/style/css',
  85. 'element-plus/es/components/tabs/style/css',
  86. 'element-plus/es/components/tab-pane/style/css',
  87. 'element-plus/es/components/select/style/css',
  88. 'element-plus/es/components/option/style/css',
  89. 'element-plus/es/components/input/style/css',
  90. 'element-plus/es/components/row/style/css',
  91. 'element-plus/es/components/slider/style/css',
  92. 'element-plus/es/components/col/style/css',
  93. 'element-plus/es/components/switch/style/css',
  94. 'element-plus/es/components/checkbox/style/css',
  95. '@vue/reactivity',
  96. 'element-plus/es/components/config-provider/style/css',
  97. 'element-plus/es/locale/lang/zh-cn',
  98. '@element-plus/icons-vue',
  99. 'element-plus/es/components/container/style/css',
  100. 'element-plus/es/components/footer/style/css',
  101. 'element-plus/es/components/main/style/css',
  102. 'element-plus/es/components/header/style/css',
  103. 'element-plus/es/components/button/style/css',
  104. 'element-plus/es/components/pagination/style/css',
  105. 'element-plus/es/components/table/style/css',
  106. 'element-plus/es/components/table-column/style/css',
  107. 'element-plus/es/components/form/style/css',
  108. 'element-plus/es/components/form-item/style/css'
  109. ]
  110. }
  111. }
  112. })