vite.config.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import { defineConfig } from 'vite';
  2. import vue from '@vitejs/plugin-vue';
  3. import electron from 'vite-plugin-electron';
  4. import renderer from 'vite-plugin-electron-renderer';
  5. import AutoImport from 'unplugin-auto-import/vite';
  6. import Components from 'unplugin-vue-components/vite';
  7. import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
  8. import { resolve } from 'path';
  9. export default defineConfig(({ command }) => {
  10. const isServe = command === 'serve';
  11. const isBuild = command === 'build';
  12. return {
  13. resolve: {
  14. alias: {
  15. '@': resolve(__dirname, 'src'),
  16. },
  17. },
  18. plugins: [
  19. vue(),
  20. AutoImport({
  21. imports: ['vue', 'vue-router', 'pinia'],
  22. resolvers: [ElementPlusResolver()],
  23. dts: 'src/auto-imports.d.ts',
  24. }),
  25. Components({
  26. resolvers: [ElementPlusResolver()],
  27. dts: 'src/components.d.ts',
  28. }),
  29. electron([
  30. {
  31. entry: 'electron/main.ts',
  32. onstart(options) {
  33. if (process.env.VSCODE_DEBUG) {
  34. console.log('[startup] Electron App');
  35. } else {
  36. options.startup();
  37. }
  38. },
  39. vite: {
  40. build: {
  41. sourcemap: isServe,
  42. minify: isBuild,
  43. outDir: 'dist-electron',
  44. rollupOptions: {
  45. external: ['electron'],
  46. output: {
  47. format: 'cjs',
  48. },
  49. },
  50. },
  51. },
  52. },
  53. {
  54. entry: 'electron/preload.ts',
  55. onstart(options) {
  56. options.reload();
  57. },
  58. vite: {
  59. build: {
  60. sourcemap: isServe ? 'inline' : undefined,
  61. minify: isBuild,
  62. outDir: 'dist-electron',
  63. rollupOptions: {
  64. external: ['electron'],
  65. output: {
  66. format: 'cjs',
  67. },
  68. },
  69. },
  70. },
  71. },
  72. ]),
  73. renderer(),
  74. ],
  75. css: {
  76. preprocessorOptions: {
  77. scss: {
  78. additionalData: `@use "@/styles/variables.scss" as *;`,
  79. },
  80. },
  81. },
  82. server: {
  83. port: 5173,
  84. proxy: {
  85. '/api': {
  86. target: 'http://localhost:3000',
  87. changeOrigin: true,
  88. },
  89. '/ws': {
  90. target: 'ws://localhost:3000',
  91. ws: true,
  92. },
  93. },
  94. },
  95. build: {
  96. outDir: 'dist',
  97. emptyOutDir: true,
  98. },
  99. };
  100. });