vite.config.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import path from 'node:path'
  2. import uni from '@dcloudio/vite-plugin-uni'
  3. import UniComponents from '@uni-helper/vite-plugin-uni-components'
  4. import UniLayouts from '@uni-helper/vite-plugin-uni-layouts'
  5. import UniPages from '@uni-helper/vite-plugin-uni-pages'
  6. import UniPlatform from '@uni-helper/vite-plugin-uni-platform'
  7. import vueJsx from '@vitejs/plugin-vue-jsx'
  8. import { NutResolver } from 'nutui-uniapp'
  9. import UnoCSS from 'unocss/vite'
  10. import AutoImport from 'unplugin-auto-import/vite'
  11. import Components from 'unplugin-vue-components/vite'
  12. import { defineConfig, loadEnv } from 'vite'
  13. import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
  14. import UniProvider from './build/vite-plugin-uni-provider'
  15. const root = process.cwd()
  16. function pathResolve(dir: string) {
  17. return path.resolve(root, '.', dir)
  18. }
  19. // https://vitejs.dev/config/
  20. export default defineConfig(({ mode }) => {
  21. const env = loadEnv(mode, process.cwd(), '')
  22. return {
  23. resolve: {
  24. alias: {
  25. '@': pathResolve('src'),
  26. },
  27. },
  28. server: {
  29. proxy: {
  30. '/api': {
  31. target: env.VITE_APP_BASE_API, // 对应自己的接口
  32. changeOrigin: true,
  33. rewrite: (path) => path.replace(/^\/api/, ''),
  34. },
  35. },
  36. },
  37. plugins: [
  38. UniPages({
  39. homePage: 'pages/privacy/index',
  40. exclude: ['**/components/**/*.*'],
  41. subPackages: ['src/pages-sub'],
  42. }),
  43. UniPlatform(),
  44. UniLayouts(),
  45. UniComponents({
  46. resolvers: [NutResolver()],
  47. }),
  48. uni(),
  49. // 自动注册页面全局组件
  50. UniProvider(),
  51. UnoCSS(),
  52. vueJsx(),
  53. createSvgIconsPlugin({
  54. iconDirs: [pathResolve('src/static/icons')],
  55. symbolId: 'icon-[dir]-[name]',
  56. svgoOptions: true,
  57. }),
  58. Components({
  59. // 按需导入组件,相关组件声明放置于 components.d.ts
  60. dts: './types/components.d.ts',
  61. }),
  62. AutoImport({
  63. include: [
  64. /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
  65. /\.vue$/,
  66. /\.vue\?vue/, // .vue
  67. ],
  68. dirs: ['./src'],
  69. imports: [
  70. 'vue',
  71. 'uni-app',
  72. {
  73. 'nutui-uniapp/composables': [
  74. // 在这里添加需要自动导入的API
  75. 'useToast',
  76. ],
  77. },
  78. ], // 限定范围为 vue, uni-app
  79. dts: 'types/auto-import.d.ts', // 自动生成 'auto-import.d.ts'全局声明
  80. }),
  81. ],
  82. // build: {
  83. // // 方便非h5端调试
  84. // sourcemap: env.VITE_SHOW_SOURCEMAP === 'true', // 默认是false
  85. // target: 'es6',
  86. // // 开发环境不用压缩
  87. // minify: mode === 'development' ? false : 'terser',
  88. // terserOptions: {
  89. // compress: {
  90. // drop_console: env.VITE_DELETE_CONSOLE === 'true',
  91. // drop_debugger: true,
  92. // },
  93. // },
  94. // },
  95. }
  96. })