electron.vite.config.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { resolve } from 'path'
  2. import { defineConfig, externalizeDepsPlugin, loadEnv } from 'electron-vite'
  3. import vue from '@vitejs/plugin-vue'
  4. import vueJsx from '@vitejs/plugin-vue-jsx'
  5. import dayjs from 'dayjs'
  6. import { createProxy } from './factory/vite/proxy'
  7. import { wrapperEnv } from './factory/utils'
  8. import { createVitePlugins } from './factory/vite/plugin'
  9. import pkg from './package.json'
  10. const { dependencies, devDependencies, name, version } = pkg
  11. // 获取构建号,如果本地开发没有传,则默认为 'dev'
  12. const BUILD_NUMBER = process.env.VITE_APP_BUILD_NUMBER || 'dev'
  13. const __APP_INFO__ = {
  14. pkg: { dependencies, devDependencies, name, version },
  15. buildVersion: BUILD_NUMBER,
  16. lastBuildTime: dayjs().format('YYYY-MM-DD HH:mm:ss')
  17. }
  18. function pathResolve(dir: string) {
  19. return resolve(process.cwd(), '.', dir)
  20. }
  21. export default defineConfig(({ command, mode }) => {
  22. const root = process.cwd()
  23. const env = loadEnv(mode, root)
  24. const viteEnv = wrapperEnv(env)
  25. const { VITE_DROP_CONSOLE, VITE_PORT, VITE_PROXY, VITE_PUBLIC_PATH } = viteEnv
  26. const isBuild = command === 'build'
  27. return {
  28. main: {
  29. plugins: [externalizeDepsPlugin()]
  30. },
  31. preload: {
  32. plugins: [externalizeDepsPlugin()]
  33. },
  34. renderer: {
  35. root: pathResolve('src/renderer'),
  36. base: VITE_PUBLIC_PATH,
  37. resolve: {
  38. alias: {
  39. '@': resolve('src/renderer/src'),
  40. '#': resolve('src/renderer/types')
  41. }
  42. },
  43. server: {
  44. host: true,
  45. port: VITE_PORT,
  46. proxy: createProxy(VITE_PROXY)
  47. },
  48. define: {
  49. // 在构建时,将环境变量注入到 window 对象上
  50. // 'window.__APP_ENV__': JSON.stringify(env),
  51. // setting vue-i18-next
  52. // Suppress warning
  53. __INTLIFY_PROD_DEVTOOLS__: false,
  54. __APP_INFO__: JSON.stringify(__APP_INFO__)
  55. },
  56. esbuild: {
  57. pure: VITE_DROP_CONSOLE ? ['console.log'] : []
  58. },
  59. plugins: [vue(), vueJsx(), ...createVitePlugins(viteEnv, isBuild)]
  60. }
  61. }
  62. })