vite.config.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /// <reference types="vitest" />
  2. import path from 'node:path'
  3. import { defineConfig } from 'vite'
  4. import Vue from '@vitejs/plugin-vue'
  5. import Pages from 'vite-plugin-pages'
  6. import Components from 'unplugin-vue-components/vite'
  7. import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
  8. import AutoImport from 'unplugin-auto-import/vite'
  9. import WindiCSS from 'vite-plugin-windicss'
  10. import VueMacros from 'unplugin-vue-macros/vite'
  11. import topLevelAwait from 'vite-plugin-top-level-await'
  12. export default defineConfig({
  13. resolve: {
  14. alias: {
  15. '~/': `${path.resolve(__dirname, 'src')}/`,
  16. },
  17. },
  18. css: {
  19. preprocessorOptions: {
  20. scss: {
  21. additionalData: '@use "~/styles/element/index.scss" as *;',
  22. },
  23. },
  24. },
  25. plugins: [
  26. topLevelAwait({
  27. // The export name of top-level await promise for each chunk module
  28. promiseExportName: '__tla',
  29. // The function to generate import names of top-level await promise in each chunk module
  30. promiseImportName: i => `__tla_${i}`,
  31. }),
  32. VueMacros({
  33. plugins: {
  34. vue: Vue({
  35. reactivityTransform: true,
  36. }),
  37. },
  38. }),
  39. // https://github.com/hannoeru/vite-plugin-pages
  40. Pages(),
  41. // https://github.com/antfu/unplugin-auto-import
  42. AutoImport({
  43. imports: [
  44. 'vue',
  45. 'vue/macros',
  46. 'vue-router',
  47. '@vueuse/core',
  48. ],
  49. dts: true,
  50. dirs: [
  51. './src/composables',
  52. './src/utils',
  53. ],
  54. vueTemplate: true,
  55. resolvers: [
  56. ElementPlusResolver(),
  57. ],
  58. }),
  59. // https://github.com/antfu/vite-plugin-components
  60. Components({
  61. // dts: true,
  62. // resolvers: [
  63. // ElementPlusResolver(),
  64. // ],
  65. // dts: 'src/components.d.ts',
  66. dirs: ['src/components/'],
  67. // allow auto load markdown components under `./src/components/`
  68. extensions: ['vue', 'md'],
  69. // allow auto import and register components used in markdown
  70. include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
  71. resolvers: [ElementPlusResolver({ importStyle: 'sass' })],
  72. }),
  73. WindiCSS(),
  74. ],
  75. // https://github.com/vitest-dev/vitest
  76. test: {
  77. environment: 'jsdom',
  78. },
  79. build: {
  80. minify: 'terser',
  81. terserOptions: {
  82. compress: {
  83. drop_console: true,
  84. drop_debugger: true,
  85. },
  86. },
  87. },
  88. })