vite.config.ts 2.0 KB

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