vite.config.ts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. /// <reference types="vitest" />
  2. import { resolve } from 'node:path'
  3. import { fileURLToPath } from 'node:url'
  4. import * as process from 'node:process'
  5. import { loadEnv } from 'vite'
  6. import type { ConfigEnv, UserConfig } from 'vite'
  7. import { createVitePlugins } from './plugins'
  8. import { OUTPUT_DIR } from './plugins/constants'
  9. const baseSrc = fileURLToPath(new URL('./src', import.meta.url))
  10. // https://vitejs.dev/config/
  11. export default ({ mode }: ConfigEnv): UserConfig => {
  12. const env = loadEnv(mode, process.cwd())
  13. const proxyObj = {}
  14. if (mode === 'development' && env.VITE_APP_BASE_API_DEV && env.VITE_APP_BASE_URL_DEV) {
  15. proxyObj[env.VITE_APP_BASE_API_DEV] = {
  16. target: env.VITE_APP_BASE_URL_DEV,
  17. changeOrigin: true,
  18. rewrite: path => path.replace(new RegExp(`^${env.VITE_APP_BASE_API_DEV}`), ''),
  19. }
  20. }
  21. return {
  22. plugins: createVitePlugins(env),
  23. resolve: {
  24. alias: [
  25. {
  26. find: 'dayjs',
  27. replacement: 'dayjs/esm',
  28. },
  29. {
  30. find: /^dayjs\/locale/,
  31. replacement: 'dayjs/esm/locale',
  32. },
  33. {
  34. find: /^dayjs\/plugin/,
  35. replacement: 'dayjs/esm/plugin',
  36. },
  37. {
  38. find: 'vue-i18n',
  39. replacement: mode === 'development' ? 'vue-i18n/dist/vue-i18n.esm-browser.js' : 'vue-i18n/dist/vue-i18n.esm-bundler.js',
  40. },
  41. {
  42. find: /^ant-design-vue\/es$/,
  43. replacement: 'ant-design-vue/es',
  44. },
  45. {
  46. find: /^ant-design-vue\/dist$/,
  47. replacement: 'ant-design-vue/dist',
  48. },
  49. {
  50. find: /^ant-design-vue\/lib$/,
  51. replacement: 'ant-design-vue/es',
  52. },
  53. {
  54. find: /^ant-design-vue$/,
  55. replacement: 'ant-design-vue/es',
  56. },
  57. {
  58. find: 'lodash',
  59. replacement: 'lodash-es',
  60. },
  61. {
  62. find: '~@',
  63. replacement: baseSrc,
  64. },
  65. {
  66. find: '~',
  67. replacement: baseSrc,
  68. },
  69. {
  70. find: '@',
  71. replacement: baseSrc,
  72. },
  73. {
  74. find: '~#',
  75. replacement: resolve(baseSrc, './enums'),
  76. },
  77. ],
  78. },
  79. build: {
  80. chunkSizeWarningLimit: 4096,
  81. outDir: OUTPUT_DIR,
  82. rollupOptions: {
  83. output: {
  84. manualChunks: {
  85. vue: ['vue', 'vue-router', 'pinia', 'vue-i18n', '@vueuse/core'],
  86. antd: ['ant-design-vue', '@ant-design/icons-vue', 'dayjs'],
  87. // lodash: ['loadsh-es'],
  88. },
  89. },
  90. },
  91. },
  92. server: {
  93. port: 6678,
  94. proxy: {
  95. ...proxyObj,
  96. // [env.VITE_APP_BASE_API]: {
  97. // target: env.VITE_APP_BASE_URL,
  98. // // 如果你是https接口,需要配置这个参数
  99. // // secure: false,
  100. // changeOrigin: true,
  101. // rewrite: path => path.replace(new RegExp(`^${env.VITE_APP_BASE_API}`), ''),
  102. // },
  103. },
  104. },
  105. test: {
  106. globals: true,
  107. environment: 'jsdom',
  108. },
  109. }
  110. }