vite.config.mts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import path from "path";
  2. import { ConfigEnv, UserConfig } from "vite";
  3. import vue from "@vitejs/plugin-vue";
  4. import vueJsx from "@vitejs/plugin-vue-jsx";
  5. import compression from "vite-plugin-compression";
  6. import { visualizer } from "rollup-plugin-visualizer";
  7. import { proxy } from "./src/config/proxy";
  8. import { cool } from "@cool-vue/vite-plugin";
  9. function resolve(dir: string) {
  10. return path.resolve(__dirname, ".", dir);
  11. }
  12. function isDev(mode: string | undefined): boolean {
  13. return mode === "development";
  14. }
  15. // https://vitejs.dev/config
  16. export default ({ mode }: ConfigEnv): UserConfig => {
  17. return {
  18. plugins: [
  19. vue(),
  20. compression(),
  21. vueJsx(),
  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. "/@": resolve("src"),
  50. "/$": resolve("src/modules"),
  51. "/#": resolve("src/plugins"),
  52. "/~": resolve("packages")
  53. }
  54. },
  55. esbuild: {
  56. drop: isDev(mode) ? [] : ["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(mode),
  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. let str = id.toString().split("node_modules/")[1];
  76. if (str[0] == "@") {
  77. str = str.replace("/", ".");
  78. }
  79. return str.split("/")[0].toString();
  80. }
  81. }
  82. }
  83. }
  84. }
  85. }
  86. };
  87. };