vite.config.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import fs from 'node:fs'
  2. import path from 'node:path'
  3. import process from 'node:process'
  4. import dayjs from 'dayjs'
  5. import { defineConfig, loadEnv } from 'vite'
  6. import pkg from './package.json'
  7. import createVitePlugins from './vite/plugins'
  8. // https://vitejs.dev/config/
  9. export default defineConfig(({ mode, command }) => {
  10. const env = loadEnv(mode, process.cwd())
  11. // 全局 scss 资源
  12. const scssResources: string[] = []
  13. fs.readdirSync('src/assets/styles/resources').forEach((dirname) => {
  14. if (fs.statSync(`src/assets/styles/resources/${dirname}`).isFile()) {
  15. scssResources.push(`@use "/src/assets/styles/resources/${dirname}" as *;`)
  16. }
  17. })
  18. return {
  19. // 开发服务器选项 https://cn.vitejs.dev/config/server-options
  20. server: {
  21. open: true,
  22. host: '0.0.0.0', // 监听所有接口
  23. port: 9000,
  24. proxy: {
  25. '/proxy': {
  26. target: env.VITE_APP_API_BASEURL,
  27. changeOrigin: command === 'serve' && env.VITE_OPEN_PROXY === 'true',
  28. rewrite: path => path.replace(/\/proxy/, ''),
  29. },
  30. },
  31. },
  32. // 构建选项 https://cn.vitejs.dev/config/build-options
  33. build: {
  34. outDir: mode === 'production' ? 'dist' : `dist-${mode}`,
  35. sourcemap: env.VITE_BUILD_SOURCEMAP === 'true',
  36. },
  37. define: {
  38. __SYSTEM_INFO__: JSON.stringify({
  39. pkg: {
  40. version: pkg.version,
  41. dependencies: pkg.dependencies,
  42. devDependencies: pkg.devDependencies,
  43. },
  44. lastBuildTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
  45. }),
  46. },
  47. plugins: createVitePlugins(mode, command === 'build'),
  48. resolve: {
  49. alias: {
  50. '@': path.resolve(__dirname, 'src'),
  51. '#': path.resolve(__dirname, 'src/types'),
  52. },
  53. },
  54. optimizeDeps: {
  55. include: ['@vue-office/docx', 'vue-demi'],
  56. },
  57. css: {
  58. preprocessorOptions: {
  59. scss: {
  60. api: 'modern-compiler',
  61. additionalData: scssResources.join(''),
  62. },
  63. },
  64. },
  65. }
  66. })