vite.config.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import path from "path";
  2. import { 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/cool/config/proxy";
  8. import { cool } from "./build/cool";
  9. function resolve(dir: string) {
  10. return path.resolve(__dirname, ".", dir);
  11. }
  12. // https://vitejs.dev/config
  13. export default (): UserConfig => {
  14. return {
  15. base: "/",
  16. plugins: [
  17. vue(),
  18. compression(),
  19. vueJsx(),
  20. cool(),
  21. visualizer({
  22. open: false,
  23. gzipSize: true,
  24. brotliSize: true
  25. })
  26. ],
  27. css: {
  28. preprocessorOptions: {
  29. scss: {
  30. charset: false
  31. }
  32. }
  33. },
  34. resolve: {
  35. alias: {
  36. "/@": resolve("src"),
  37. "/#": resolve("types"),
  38. "/$": resolve("src/modules")
  39. }
  40. },
  41. server: {
  42. port: 9000,
  43. proxy,
  44. hmr: {
  45. overlay: true
  46. }
  47. },
  48. build: {
  49. minify: "esbuild",
  50. // terserOptions: {
  51. // compress: {
  52. // drop_console: true,
  53. // drop_debugger: true
  54. // }
  55. // },
  56. sourcemap: false,
  57. rollupOptions: {
  58. output: {
  59. chunkFileNames: "static/js/[name]-[hash].js",
  60. entryFileNames: "static/js/[name]-[hash].js",
  61. assetFileNames: "static/[ext]/[name]-[hash].[ext]",
  62. manualChunks(id) {
  63. if (id.includes("node_modules")) {
  64. if (!["@cool-vue/crud"].find((e) => id.includes(e))) {
  65. let str = id.toString().split("node_modules/")[1];
  66. if (str[0] == "@") {
  67. str = str.replace("/", ".");
  68. }
  69. return str.split("/")[0].toString();
  70. }
  71. }
  72. }
  73. }
  74. }
  75. }
  76. };
  77. };