Files
his/openhis-ui-vue3/vite.config.js
wangjian963 d9c74abaeb "fix(build): 修复 vxe-table 表格无法渲染数据的问题" -m "根因:Vite 预打包 vxe-table 时将
xe-utils/hasOwnProp 内联,导致 patchDepsPlugin 的 Vue 3 Proxy 兼容补丁无法生效,obj.hasOwnProperty(key) 在 Proxy
  对象上抛出 TypeError。

  修复:在 optimizeDeps.exclude 中排除 xe-utils,阻止预打包,确保补丁生效。"
2026-06-03 15:43:03 +08:00

88 lines
2.9 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* @Author: sjjh
* @Date: 2025-04-09 09:33:35
* @Description:
*/
import {defineConfig, loadEnv} from 'vite';
import path from 'path';
import createVitePlugins from './vite/plugins';
// https://vitejs.dev/config/
export default defineConfig(({ mode, command }) => {
const env = loadEnv(mode, process.cwd());
const { VITE_APP_ENV } = env;
const buildVersion = process.env.VITE_APP_VERSION || env.VITE_APP_VERSION || Date.now().toString();
return {
define: {
'import.meta.env.VITE_APP_BUILD_VERSION': JSON.stringify(buildVersion),
},
// 部署生产环境和开发环境下的URL。
// 默认情况下vite 会假设你的应用是被部署在一个域名的根路径上
// 例如 https://www.openHIS.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.openhis.vip/admin/,则设置 baseUrl 为 /admin/。
base: VITE_APP_ENV === 'production' ? '/' : '/',
plugins: createVitePlugins(env, command === 'build'),
resolve: {
// https://cn.vitejs.dev/config/#resolve-alias
alias: {
// 设置路径
'~': path.resolve(__dirname, './'),
// 设置别名
'@': path.resolve(__dirname, './src'),
// Patch Element Plus form utils to suppress NaN during vxe-table expand teardown
},
// https://cn.vitejs.dev/config/#resolve-extensions
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'],
},
// vite 相关配置
server: {
port: 81,
host: true,
open: true,
proxy: {
// https://cn.vitejs.dev/config/#server-proxy
'/dev-api': {
target: process.env.VITE_API_PROXY || 'http://localhost:18080/openhis',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, ''),
},
'/ybplugin': {
target: 'http://localhost:5000',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/ybplugin/, ''),
},
},
},
build: {
cssMinify: 'esbuild',
},
optimizeDeps: {
// 排除 xe-utils 预打包,以便 patchDepsPlugin 能拦截并修补 hasOwnProp
// (Vue 3 Proxy 对象上调用 obj.hasOwnProperty(key) 会失败)
exclude: ['xe-utils'],
},
//fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file
css: {
preprocessorOptions: {
scss: {
api: 'modern-compiler',
silenceDeprecations: ['import', 'global-builtin', 'color-functions', 'legacy-js-api'],
},
},
postcss: {
plugins: [
{
postcssPlugin: 'internal:charset-removal',
AtRule: {
charset: (atRule) => {
if (atRule.name === 'charset') {
atRule.remove();
}
},
},
},
],
},
},
};
});