vite.config.mts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import { fileURLToPath, URL } from "node:url";
  2. import { ConfigEnv, UserConfig } from "vite";
  3. import vue from "@vitejs/plugin-vue";
  4. import vueJsx from "@vitejs/plugin-vue-jsx";
  5. import vueDevTools from "vite-plugin-vue-devtools";
  6. import compression from "vite-plugin-compression";
  7. import { visualizer } from "rollup-plugin-visualizer";
  8. import { proxy } from "./src/config/proxy";
  9. import { cool } from "@cool-vue/vite-plugin";
  10. function toPath(dir: string) {
  11. return fileURLToPath(new URL(dir, import.meta.url));
  12. }
  13. // https://vitejs.dev/config
  14. export default ({ mode }: ConfigEnv): UserConfig => {
  15. const isDev = mode === "development";
  16. return {
  17. plugins: [
  18. vue(),
  19. compression(),
  20. vueJsx(),
  21. // vueDevTools(),
  22. cool({
  23. type: "admin",
  24. proxy
  25. }),
  26. visualizer({
  27. open: false,
  28. gzipSize: true,
  29. brotliSize: true
  30. })
  31. ],
  32. base: "/",
  33. server: {
  34. port: 9000,
  35. proxy,
  36. hmr: {
  37. overlay: true
  38. }
  39. },
  40. css: {
  41. preprocessorOptions: {
  42. scss: {
  43. charset: false
  44. }
  45. }
  46. },
  47. resolve: {
  48. alias: {
  49. "/@": toPath("./src"),
  50. "/$": toPath("./src/modules"),
  51. "/#": toPath("./src/plugins"),
  52. "/~": toPath("./packages")
  53. }
  54. },
  55. esbuild: {
  56. // drop: isDev ? [] : ["console", "debugger"]
  57. },
  58. build: {
  59. minify: "esbuild",
  60. // terserOptions: {
  61. // compress: {
  62. // drop_console: true,
  63. // drop_debugger: true
  64. // }
  65. // },
  66. sourcemap: isDev,
  67. rollupOptions: {
  68. output: {
  69. chunkFileNames: "static/js/[name]-[hash].js",
  70. entryFileNames: "static/js/[name]-[hash].js",
  71. assetFileNames: "static/[ext]/[name]-[hash].[ext]",
  72. manualChunks(id) {
  73. if (id.includes("node_modules")) {
  74. if (!["@cool-vue/crud"].find((e) => id.includes(e))) {
  75. if (id.includes("prettier")) {
  76. return;
  77. }
  78. return id
  79. .toString()
  80. .split("node_modules/")[1]
  81. .replace(".pnpm/", "")
  82. .split("/")[0];
  83. } else {
  84. return "comm";
  85. }
  86. }
  87. }
  88. }
  89. }
  90. }
  91. };
  92. };