vite.config.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import {defineConfig} from 'vitest/config';
  2. import type {PluginOption} from 'vite';
  3. import vue from '@vitejs/plugin-vue';
  4. import {resolve} from 'path';
  5. import {visualizer} from 'rollup-plugin-visualizer';
  6. import postcssNest from 'postcss-nesting';
  7. import postcssPresetEnv from 'postcss-preset-env';
  8. import eslint from '@nabla/vite-plugin-eslint';
  9. import browserslistToEsbuild from 'browserslist-to-esbuild';
  10. // eslint-disable-next-line @typescript-eslint/ban-ts-comment
  11. // @ts-ignore
  12. import ElementPlus from 'unplugin-element-plus/vite';
  13. export default defineConfig({
  14. define: {
  15. 'process.env': process.env,
  16. },
  17. base: './',
  18. server: {
  19. port: 3000,
  20. },
  21. esbuild: {
  22. legalComments: 'none',
  23. },
  24. build: {
  25. target: browserslistToEsbuild(),
  26. emptyOutDir: true,
  27. rollupOptions: {
  28. output: {
  29. chunkFileNames: 'js/[name].[hash].js',
  30. entryFileNames: 'js/[name].[hash].js',
  31. assetFileNames: 'assets/[name].[hash].[ext]',
  32. manualChunks: {
  33. vueVendor: ['vue', 'vue-router'],
  34. },
  35. },
  36. },
  37. },
  38. plugins: [
  39. ElementPlus({}),
  40. vue(),
  41. visualizer({
  42. filename: './visualizer/index.html',
  43. }) as unknown as PluginOption,
  44. eslint(),
  45. ],
  46. test: {
  47. include: ['src/**/*.{test, spec}.{js,jsx,ts,tsx}'],
  48. environment: 'jsdom',
  49. globals: true,
  50. },
  51. css: {
  52. postcss: {
  53. plugins: [
  54. postcssNest(),
  55. postcssPresetEnv({
  56. stage: 3,
  57. autoprefixer: {
  58. flexbox: 'no-2009',
  59. },
  60. }),
  61. ],
  62. },
  63. },
  64. resolve: {
  65. alias: {
  66. '@styles': resolve(__dirname, 'src/styles'),
  67. '@assets': resolve(__dirname, 'src/assets'),
  68. '@routes': resolve(__dirname, 'src/routes'),
  69. '@apis': resolve(__dirname, 'src/apis'),
  70. '@components': resolve(__dirname, 'src/components'),
  71. '@hooks': resolve(__dirname, 'src/hooks'),
  72. '@pages': resolve(__dirname, 'src/pages'),
  73. '@stores': resolve(__dirname, 'src/stores'),
  74. '@models': resolve(__dirname, 'src/models'),
  75. '@utils': resolve(__dirname, 'src/utils'),
  76. '@locales': resolve(__dirname, 'src/locales'),
  77. },
  78. },
  79. });