vite.config.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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("src/modules"),
  48. "/#": resolve("types"),
  49. "/~": resolve("packages")
  50. }
  51. },
  52. esbuild: {
  53. drop: isDev(mode) ? [] : ["console", "debugger"]
  54. },
  55. build: {
  56. minify: "esbuild",
  57. // terserOptions: {
  58. // compress: {
  59. // drop_console: true,
  60. // drop_debugger: true
  61. // }
  62. // },
  63. sourcemap: isDev(mode),
  64. rollupOptions: {
  65. output: {
  66. chunkFileNames: "static/js/[name]-[hash].js",
  67. entryFileNames: "static/js/[name]-[hash].js",
  68. assetFileNames: "static/[ext]/[name]-[hash].[ext]",
  69. manualChunks(id) {
  70. if (id.includes("node_modules")) {
  71. if (!["@cool-vue/crud"].find((e) => id.includes(e))) {
  72. let str = id.toString().split("node_modules/")[1];
  73. if (str[0] == "@") {
  74. str = str.replace("/", ".");
  75. }
  76. return str.split("/")[0].toString();
  77. }
  78. }
  79. }
  80. }
  81. }
  82. }
  83. };
  84. };