vite.config.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. import VueJsx from '@vitejs/plugin-vue-jsx';
  11. export default defineConfig({
  12. define: {
  13. 'process.env': process.env,
  14. },
  15. base: './',
  16. server: {
  17. port: 3000,
  18. },
  19. esbuild: {
  20. legalComments: 'none',
  21. },
  22. build: {
  23. target: browserslistToEsbuild(),
  24. emptyOutDir: true,
  25. rollupOptions: {
  26. output: {
  27. chunkFileNames: 'js/[name].[hash].js',
  28. entryFileNames: 'js/[name].[hash].js',
  29. assetFileNames: 'assets/[name].[hash].[ext]',
  30. manualChunks: {
  31. vueVendor: ['vue', 'vue-router'],
  32. },
  33. },
  34. },
  35. },
  36. plugins: [
  37. vue(),
  38. visualizer({
  39. filename: './visualizer/index.html',
  40. }) as unknown as PluginOption,
  41. eslint(),
  42. VueJsx(),
  43. ],
  44. test: {
  45. include: ['src/**/*.{test, spec}.{js,jsx,ts,tsx}'],
  46. environment: 'jsdom',
  47. globals: true,
  48. },
  49. css: {
  50. postcss: {
  51. plugins: [
  52. postcssNest(),
  53. postcssPresetEnv({
  54. stage: 3,
  55. autoprefixer: {
  56. flexbox: 'no-2009',
  57. },
  58. }),
  59. ],
  60. },
  61. },
  62. resolve: {
  63. alias: {
  64. '@styles': resolve(__dirname, 'src/styles'),
  65. '@assets': resolve(__dirname, 'src/assets'),
  66. '@routes': resolve(__dirname, 'src/routes'),
  67. '@apis': resolve(__dirname, 'src/apis'),
  68. '@components': resolve(__dirname, 'src/components'),
  69. '@hooks': resolve(__dirname, 'src/hooks'),
  70. '@pages': resolve(__dirname, 'src/pages'),
  71. '@stores': resolve(__dirname, 'src/stores'),
  72. '@models': resolve(__dirname, 'src/models'),
  73. '@utils': resolve(__dirname, 'src/utils'),
  74. '@locales': resolve(__dirname, 'src/locales'),
  75. },
  76. },
  77. });