vite.config.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /// <reference types="vitest" />
  2. /// <reference types="vite-plugin-svgr/client" />
  3. import { defineConfig, loadEnv } from "vite";
  4. import viteTsconfigPaths from "vite-tsconfig-paths";
  5. import svgr from "vite-plugin-svgr";
  6. import { reactRouter } from "@react-router/dev/vite";
  7. import { configDefaults } from "vitest/config";
  8. export default defineConfig(({ mode }) => {
  9. const {
  10. VITE_BACKEND_HOST = "127.0.0.1:3000",
  11. VITE_USE_TLS = "false",
  12. VITE_FRONTEND_PORT = "3001",
  13. VITE_INSECURE_SKIP_VERIFY = "false",
  14. } = loadEnv(mode, process.cwd());
  15. const USE_TLS = VITE_USE_TLS === "true";
  16. const INSECURE_SKIP_VERIFY = VITE_INSECURE_SKIP_VERIFY === "true";
  17. const PROTOCOL = USE_TLS ? "https" : "http";
  18. const WS_PROTOCOL = USE_TLS ? "wss" : "ws";
  19. const API_URL = `${PROTOCOL}://${VITE_BACKEND_HOST}/`;
  20. const WS_URL = `${WS_PROTOCOL}://${VITE_BACKEND_HOST}/`;
  21. const FE_PORT = Number.parseInt(VITE_FRONTEND_PORT, 10);
  22. return {
  23. plugins: [
  24. !process.env.VITEST && reactRouter(),
  25. viteTsconfigPaths(),
  26. svgr(),
  27. ],
  28. server: {
  29. port: FE_PORT,
  30. proxy: {
  31. "/api": {
  32. target: API_URL,
  33. changeOrigin: true,
  34. secure: !INSECURE_SKIP_VERIFY,
  35. },
  36. "/ws": {
  37. target: WS_URL,
  38. ws: true,
  39. changeOrigin: true,
  40. secure: !INSECURE_SKIP_VERIFY,
  41. },
  42. "/socket.io": {
  43. target: WS_URL,
  44. ws: true,
  45. changeOrigin: true,
  46. secure: !INSECURE_SKIP_VERIFY,
  47. // rewriteWsOrigin: true,
  48. },
  49. },
  50. },
  51. ssr: {
  52. noExternal: ["react-syntax-highlighter"],
  53. },
  54. clearScreen: false,
  55. test: {
  56. environment: "jsdom",
  57. setupFiles: ["vitest.setup.ts"],
  58. reporters: "basic",
  59. exclude: [...configDefaults.exclude, "tests"],
  60. coverage: {
  61. reporter: ["text", "json", "html", "lcov", "text-summary"],
  62. reportsDirectory: "coverage",
  63. include: ["src/**/*.{ts,tsx}"],
  64. },
  65. },
  66. };
  67. });