vite.config.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { defineConfig } from "vite";
  2. import vue from "@vitejs/plugin-vue";
  3. import { resolve } from "path";
  4. import envConfig from "./env.config.js";
  5. import scssVariables from "./src/styles/variables.scss.js";
  6. const scssAdditionalData = Object.keys(scssVariables)
  7. .map((k) => `$${k.replace("_", "-")}: ${scssVariables[k]};`)
  8. .join("\n");
  9. export default defineConfig(({ mode }) => {
  10. const currentEnv = envConfig[mode] || envConfig.development;
  11. return {
  12. plugins: [vue()],
  13. resolve: {
  14. alias: {
  15. "@": resolve(__dirname, "src"),
  16. },
  17. extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"],
  18. },
  19. css: {
  20. preprocessorOptions: {
  21. scss: {
  22. additionalData: scssAdditionalData,
  23. },
  24. },
  25. },
  26. server: {
  27. host: "127.0.0.1",
  28. port: 8082,
  29. open: false,
  30. proxy: {
  31. "/ws": {
  32. target: "https://apis.map.qq.com",
  33. changeOrigin: true,
  34. ws: false,
  35. },
  36. "/v3/elevation": {
  37. target: "https://restapi.amap.com",
  38. changeOrigin: true,
  39. ws: false,
  40. },
  41. },
  42. },
  43. build: {
  44. target: "es2020",
  45. outDir: "dist",
  46. assetsDir: "assets",
  47. sourcemap: false,
  48. minify: "esbuild",
  49. rollupOptions: {
  50. output: {
  51. chunkFileNames: "js/[name]-[hash].js",
  52. entryFileNames: "js/[name]-[hash].js",
  53. assetFileNames: "[ext]/[name]-[hash].[ext]",
  54. manualChunks: {
  55. vue: ["vue", "vue-router"],
  56. elementPlus: ["element-plus"],
  57. ol: ["ol"],
  58. },
  59. },
  60. },
  61. },
  62. define: {
  63. VE_ENV: {
  64. MODE: JSON.stringify(currentEnv.NODE_ENV),
  65. SERVER: JSON.stringify(currentEnv.SERVER),
  66. PYSERVER: JSON.stringify(currentEnv.PYSERVER),
  67. NEW_SERVER: JSON.stringify(currentEnv.NEW_SERVER),
  68. },
  69. __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: "false",
  70. },
  71. optimizeDeps: {
  72. include: ["vue", "vue-router", "element-plus", "axios", "dayjs", "ol"],
  73. },
  74. };
  75. });