vite.config.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import { defineConfig, loadEnv } from "vite";
  2. import vue from "@vitejs/plugin-vue";
  3. import { resolve } from "path";
  4. // vue setup 的糖语法
  5. import VueSetupExtend from "vite-plugin-vue-setup-extend";
  6. // 不用导入 vue 的 import 了
  7. import AutoImport from "unplugin-auto-import/vite";
  8. import Icons from "unplugin-icons/vite";
  9. import vueJsx from "@vitejs/plugin-vue-jsx";
  10. import { createHtmlPlugin } from "vite-plugin-html";
  11. import pkg from "./package.json";
  12. import { codeInspectorPlugin } from "code-inspector-plugin";
  13. const pathResolve = dir => {
  14. return resolve(__dirname, ".", dir);
  15. };
  16. const alias = {
  17. "@": pathResolve("src"),
  18. };
  19. export default defineConfig(({ mode }) => {
  20. const ENV = loadEnv(mode, process.cwd());
  21. const GLOB_CONFIG_FILE_NAME = "_app.config.js";
  22. const isBuild = mode === "production";
  23. const getAppConfigSrc = () => {
  24. return `/${GLOB_CONFIG_FILE_NAME}?v=${pkg.version}-${new Date().getTime()}`;
  25. };
  26. return {
  27. define: {
  28. __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: "true",
  29. },
  30. esbuild: {
  31. jsxFactory: "h",
  32. jsxFragment: "Fragment",
  33. },
  34. externals: {
  35. BMap: "BMap",
  36. BMapLib: "BMapLib",
  37. },
  38. resolve: {
  39. alias,
  40. extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"],
  41. },
  42. plugins: [
  43. codeInspectorPlugin({
  44. bundler: "vite",
  45. hideConsole: true,
  46. }),
  47. Icons({
  48. autoInstall: true,
  49. compiler: "vue3",
  50. }),
  51. VueSetupExtend({ name: false }),
  52. vue(),
  53. vueJsx(),
  54. AutoImport({
  55. dts: "src/auto-imports.d.ts",
  56. imports: ["vue"],
  57. }),
  58. createHtmlPlugin({
  59. minify: isBuild,
  60. inject: {
  61. data: {
  62. title: "",
  63. },
  64. // Embed the generated app.config.js file
  65. tags: isBuild
  66. ? [
  67. {
  68. tag: "script",
  69. attrs: {
  70. src: getAppConfigSrc(),
  71. },
  72. },
  73. ]
  74. : [],
  75. },
  76. }),
  77. ],
  78. server: {
  79. host: "0.0.0.0",
  80. port: 3000,
  81. proxy: {
  82. "/emr": {
  83. //这里配置运行时服务地址
  84. target: "http://172.16.32.125:8001/emr",
  85. secure: false, //如果运行时服务是https,此处配置为true
  86. changeOrigin: true, //支持跨域调用,这里配置为true
  87. rewrite: path => path.replace(/^\/emr/, ""),
  88. },
  89. "/doctorSignatureImage": {
  90. target: "http://172.16.32.167:8077",
  91. secure: false, //如果运行时服务是https,此处配置为true
  92. changeOrigin: true, //支持跨域调用,这里配置为true
  93. },
  94. "/thyyarchive": {
  95. target: "http://172.16.32.197:9202/",
  96. secure: false,
  97. changeOrigin: true,
  98. rewrite: path => path.replace(/^\/thyyarchive/, ""),
  99. },
  100. },
  101. },
  102. build: {
  103. chunkSizeWarningLimit: 1000,
  104. outDir: "release/dist",
  105. // 优化打包把第三方的东西每次打包时都不重复
  106. // rollupOptions: {
  107. // output: {
  108. // manualChunks(id) {
  109. // if (id.includes("node_modules")) {
  110. // return id
  111. // .toString()
  112. // .split("node_modules/")[1]
  113. // .split("/")[0]
  114. // .toString();
  115. // }
  116. // return null;
  117. // },
  118. // },
  119. // },
  120. },
  121. };
  122. });