vite.config.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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 "./build/cool";
  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. visualizer({
  24. open: false,
  25. gzipSize: true,
  26. brotliSize: true
  27. })
  28. ],
  29. base: "/",
  30. server: {
  31. port: 9000,
  32. proxy,
  33. hmr: {
  34. overlay: true
  35. }
  36. },
  37. css: {
  38. preprocessorOptions: {
  39. scss: {
  40. charset: false
  41. }
  42. }
  43. },
  44. resolve: {
  45. alias: {
  46. "/@": resolve("src"),
  47. "/#": resolve("types"),
  48. "/$": resolve("src/modules")
  49. }
  50. },
  51. esbuild: {
  52. drop: isDev(mode) ? [] : ["console", "debugger"],
  53. },
  54. build: {
  55. minify: "esbuild",
  56. // terserOptions: {
  57. // compress: {
  58. // drop_console: true,
  59. // drop_debugger: true
  60. // }
  61. // },
  62. sourcemap: isDev(mode),
  63. rollupOptions: {
  64. output: {
  65. chunkFileNames: "static/js/[name]-[hash].js",
  66. entryFileNames: "static/js/[name]-[hash].js",
  67. assetFileNames: "static/[ext]/[name]-[hash].[ext]",
  68. manualChunks(id) {
  69. if (id.includes("node_modules")) {
  70. if (!["@cool-vue/crud"].find((e) => id.includes(e))) {
  71. let str = id.toString().split("node_modules/")[1];
  72. if (str[0] == "@") {
  73. str = str.replace("/", ".");
  74. }
  75. return str.split("/")[0].toString();
  76. }
  77. }
  78. }
  79. }
  80. }
  81. }
  82. };
  83. };