vite.config.ts 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import path from 'path'
  2. import { defineConfig } from 'vite'
  3. import vue from '@vitejs/plugin-vue'
  4. import WindiCss from 'vite-plugin-windicss'
  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 Icons from 'unplugin-icons/vite'
  9. import IconsResolver from 'unplugin-icons/resolver'
  10. import topLevelAwait from 'vite-plugin-top-level-await'
  11. import basicSsl from '@vitejs/plugin-basic-ssl'
  12. import ConditionalCompile from './plugins/vite-plugin-conditional-compile'
  13. // https://vitejs.dev/config/
  14. export default defineConfig({
  15. resolve: {
  16. alias: {
  17. '@': path.resolve(__dirname, 'src'),
  18. '~': path.resolve(__dirname, 'src'),
  19. // '~components': path.resolve(__dirname, 'src/components'),
  20. // '~pages': path.resolve(__dirname, 'src/pages'),
  21. // '~utils': path.resolve(__dirname, 'src/utils'),
  22. // '~assets': path.resolve(__dirname, 'src/assets'),
  23. // '~styles': path.resolve(__dirname, 'src/styles'),
  24. // '~lib': path.resolve(__dirname, 'src/lib'),
  25. // '~plugins': path.resolve(__dirname, 'src/plugins'),
  26. // '~router': path.resolve(__dirname, 'src/router'),
  27. // '~store': path.resolve(__dirname, 'src/store'),
  28. // '~config': path.resolve(__dirname, 'src/config'),
  29. // '~api': path.resolve(__dirname, 'src/api'),
  30. // '~constants': path.resolve(__dirname, 'src/constants'),
  31. // '~locales': path.resolve(__dirname, 'src/locales'),
  32. },
  33. },
  34. // css: {
  35. // preprocessorOptions: {
  36. // scss: {
  37. // additionalData: '@use "~/styles/element/index.scss" as *;',
  38. // },
  39. // },
  40. // },
  41. plugins: [
  42. basicSsl(),
  43. topLevelAwait({
  44. // The export name of top-level await promise for each chunk module
  45. promiseExportName: '__tla',
  46. // The function to generate import names of top-level await promise in each chunk module
  47. promiseImportName: i => `__tla_${i}`,
  48. }),
  49. ConditionalCompile(),
  50. vue({
  51. reactivityTransform: true,
  52. }),
  53. WindiCss(),
  54. AutoImport({
  55. // dts: 'src/auto-imports.d.ts',
  56. imports: ['vue', 'vue/macros', 'vue-router'],
  57. dirs: [
  58. 'src/composables',
  59. // 'src/store',
  60. 'src/utils',
  61. ],
  62. resolvers: [ElementPlusResolver()],
  63. vueTemplate: true,
  64. eslintrc: {
  65. enabled: true,
  66. // enabled: false, // Default `false`
  67. // filepath: './.eslintrc-auto-import.json', // Default `./.eslintrc-auto-import.json`
  68. // globalsPropValue: true, // Default `true`, (true | false | 'readonly' | 'readable' | 'writable' | 'writeable')
  69. },
  70. }),
  71. Components({
  72. // dts: 'src/components.d.ts',
  73. dirs: ['src/components/'],
  74. // allow auto load markdown components under `./src/components/`
  75. extensions: ['vue', 'md'],
  76. // allow auto import and register components used in markdown
  77. include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
  78. resolvers: [ElementPlusResolver({ importStyle: 'sass' }), IconsResolver()],
  79. }),
  80. Icons({
  81. compiler: 'vue3',
  82. autoInstall: true,
  83. }),
  84. ],
  85. server: {
  86. host: true,
  87. },
  88. build: {
  89. rollupOptions: {
  90. output: {
  91. manualChunks: {
  92. axios: ['axios'],
  93. },
  94. },
  95. },
  96. },
  97. })