vite.config.ts 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import { defineConfig, loadEnv, ConfigEnv, UserConfig } from "vite";
  2. import { resolve } from "path";
  3. import { wrapperEnv } from "./build/getEnv";
  4. import { createProxy } from "./build/proxy";
  5. import { createVitePlugins } from "./build/plugins";
  6. import tailwindcss from "@tailwindcss/vite";
  7. import pkg from "./package.json";
  8. import dayjs from "dayjs";
  9. const { dependencies, devDependencies, name, version } = pkg;
  10. const __APP_INFO__ = {
  11. pkg: { dependencies, devDependencies, name, version },
  12. lastBuildTime: dayjs().format("YYYY-MM-DD HH:mm:ss")
  13. };
  14. // @see: https://vitejs.dev/config/
  15. export default defineConfig(({ mode }: ConfigEnv): UserConfig => {
  16. const root = process.cwd();
  17. const env = loadEnv(mode, root);
  18. const viteEnv = wrapperEnv(env);
  19. return {
  20. base: mode === "test" ? "/group_lawyer_web/" : "/",
  21. # base: viteEnv.VITE_PUBLIC_PATH,
  22. root,
  23. resolve: {
  24. alias: {
  25. "@": resolve(__dirname, "./src"),
  26. "vue-i18n": "vue-i18n/dist/vue-i18n.cjs.js"
  27. },
  28. extensions: [".mjs", ".js", ".mts", ".ts", ".jsx", ".tsx", ".json", ".vue"]
  29. },
  30. define: {
  31. __APP_INFO__: JSON.stringify(__APP_INFO__)
  32. },
  33. css: {
  34. preprocessorOptions: {
  35. scss: {
  36. additionalData: `@import "@/styles/var.scss";`
  37. }
  38. }
  39. },
  40. server: {
  41. host: "0.0.0.0",
  42. port: viteEnv.VITE_PORT,
  43. open: viteEnv.VITE_OPEN,
  44. cors: true,
  45. proxy: createProxy(viteEnv.VITE_PROXY)
  46. },
  47. plugins: [tailwindcss(), createVitePlugins(viteEnv)],
  48. esbuild: {
  49. pure: viteEnv.VITE_DROP_CONSOLE ? ["console.log", "debugger"] : []
  50. },
  51. build: {
  52. outDir: "dist",
  53. minify: "esbuild",
  54. // esbuild 打包更快,但是不能去除 console.log,terser打包慢,但能去除 console.log
  55. // minify: "terser",
  56. // terserOptions: {
  57. // compress: {
  58. // drop_console: viteEnv.VITE_DROP_CONSOLE,
  59. // drop_debugger: true
  60. // }
  61. // },
  62. sourcemap: false,
  63. // 禁用 gzip 压缩大小报告,可略微减少打包时间
  64. reportCompressedSize: false,
  65. // 规定触发警告的 chunk 大小
  66. chunkSizeWarningLimit: 2000,
  67. rollupOptions: {
  68. output: {
  69. // Static resource classification and packaging
  70. chunkFileNames: "assets/js/[name]-[hash].js",
  71. entryFileNames: "assets/js/[name]-[hash].js",
  72. assetFileNames: "assets/[ext]/[name]-[hash].[ext]"
  73. }
  74. }
  75. }
  76. };
  77. });