2025-12-02 15:55:30 +08:00
|
|
|
|
import { defineConfig } from 'vite'
|
|
|
|
|
|
import vue from '@vitejs/plugin-vue'
|
|
|
|
|
|
import vueJsx from '@vitejs/plugin-vue-jsx'
|
2025-12-11 14:21:36 +08:00
|
|
|
|
import { federation } from '@module-federation/vite'
|
2025-12-06 14:49:46 +08:00
|
|
|
|
import { resolve, dirname } from 'path'
|
|
|
|
|
|
import { fileURLToPath } from 'url'
|
|
|
|
|
|
|
|
|
|
|
|
const __filename = fileURLToPath(import.meta.url)
|
|
|
|
|
|
const __dirname = dirname(__filename)
|
2025-12-02 15:55:30 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
2025-12-11 14:21:36 +08:00
|
|
|
|
* Module Federation 构建配置(@module-federation/vite)
|
|
|
|
|
|
* 官方维护版本,支持 Vite 6 + 开发模式热更新
|
2025-12-02 15:55:30 +08:00
|
|
|
|
*
|
2025-12-11 14:21:36 +08:00
|
|
|
|
* 优势:
|
|
|
|
|
|
* - ✅ 完整支持 Vite 开发模式
|
|
|
|
|
|
* - ✅ dev 模式能生成 remoteEntry.js
|
|
|
|
|
|
* - ✅ 自动处理内部路径别名 (@/)
|
|
|
|
|
|
* - ✅ 真正的生产可用版本
|
2025-12-02 15:55:30 +08:00
|
|
|
|
*/
|
|
|
|
|
|
export default defineConfig({
|
2025-12-11 14:21:36 +08:00
|
|
|
|
plugins: [
|
|
|
|
|
|
vue({
|
|
|
|
|
|
script: {
|
|
|
|
|
|
defineModel: true,
|
|
|
|
|
|
propsDestructure: true
|
|
|
|
|
|
}
|
|
|
|
|
|
}),
|
|
|
|
|
|
vueJsx(),
|
|
|
|
|
|
federation({
|
|
|
|
|
|
name: 'shared',
|
|
|
|
|
|
filename: 'remoteEntry.js',
|
|
|
|
|
|
// 暴露的模块
|
|
|
|
|
|
exposes: {
|
2025-12-12 18:17:38 +08:00
|
|
|
|
// ========== 组件模块 ==========
|
|
|
|
|
|
'./components': './src/components/index.ts',
|
2025-12-20 17:12:42 +08:00
|
|
|
|
'./components/file/FileUpload': './src/components/file/fileupload/FileUpload.vue',
|
|
|
|
|
|
'./components/file/FileHistory': './src/components/file/fileHistory/FileHistory.vue',
|
2025-12-12 18:17:38 +08:00
|
|
|
|
'./components/DynamicFormItem': './src/components/dynamicFormItem/DynamicFormItem.vue',
|
2025-12-13 14:13:31 +08:00
|
|
|
|
'./components/iframe/IframeView.vue': './src/components/iframe/IframeView.vue',
|
2025-12-20 17:12:42 +08:00
|
|
|
|
'./components/ai/knowledge/DocumentSegment.vue': './src/components/ai/knowledge/documentSegment/DocumentSegment.vue',
|
|
|
|
|
|
'./components/ai/knowledge/DocumentDetail.vue': './src/components/ai/knowledge/documentDetail/DocumentDetail.vue',
|
2025-12-20 18:52:33 +08:00
|
|
|
|
'./components/chatRoom/ChatRoom.vue': './src/components/chatRoom/chatRoom/ChatRoom.vue',
|
2025-12-13 14:13:31 +08:00
|
|
|
|
|
2025-12-12 18:17:38 +08:00
|
|
|
|
// ========== API 模块 ==========
|
2025-12-11 14:21:36 +08:00
|
|
|
|
'./api': './src/api/index.ts',
|
2025-12-12 18:17:38 +08:00
|
|
|
|
'./api/auth': './src/api/auth/auth.ts',
|
|
|
|
|
|
'./api/file': './src/api/file/file.ts',
|
2025-12-19 17:34:30 +08:00
|
|
|
|
'./api/workcase': './src/api/workcase/index.ts',
|
|
|
|
|
|
'./api/ai': './src/api/ai/index.ts',
|
2025-12-11 14:21:36 +08:00
|
|
|
|
|
2025-12-12 18:17:38 +08:00
|
|
|
|
// ========== Utils 工具模块 ==========
|
2025-12-11 14:21:36 +08:00
|
|
|
|
'./utils': './src/utils/index.ts',
|
2025-12-12 18:17:38 +08:00
|
|
|
|
'./utils/device': './src/utils/device.ts',
|
|
|
|
|
|
'./utils/route': './src/utils/route/index.ts',
|
|
|
|
|
|
'./utils/route/generator': './src/utils/route/route-generator.ts',
|
|
|
|
|
|
'./utils/file': './src/utils/file.ts',
|
2025-12-11 14:21:36 +08:00
|
|
|
|
|
2025-12-12 18:17:38 +08:00
|
|
|
|
// ========== Types 类型模块 ==========
|
2025-12-11 14:21:36 +08:00
|
|
|
|
'./types': './src/types/index.ts',
|
2025-12-12 18:17:38 +08:00
|
|
|
|
'./types/base': './src/types/base/index.ts',
|
|
|
|
|
|
'./types/auth': './src/types/auth/index.ts',
|
|
|
|
|
|
'./types/file': './src/types/file/index.ts',
|
2025-12-13 14:13:31 +08:00
|
|
|
|
'./types/sys': './src/types/sys/index.ts',
|
2025-12-19 17:34:30 +08:00
|
|
|
|
'./types/workcase': './src/types/workcase/index.ts',
|
|
|
|
|
|
'./types/ai': './src/types/ai/index.ts',
|
2025-12-13 14:13:31 +08:00
|
|
|
|
|
|
|
|
|
|
// ========== Config 配置模块 ==========
|
|
|
|
|
|
'./config': './src/config/index.ts',
|
|
|
|
|
|
|
|
|
|
|
|
// ========== Layouts 布局模块 ==========
|
|
|
|
|
|
'./layouts': './src/layouts/index.ts'
|
2025-12-11 14:21:36 +08:00
|
|
|
|
},
|
|
|
|
|
|
// 共享依赖(重要:避免重复加载)
|
|
|
|
|
|
shared: {
|
|
|
|
|
|
vue: {},
|
|
|
|
|
|
'vue-router': {},
|
|
|
|
|
|
'element-plus': {},
|
2025-12-20 17:12:42 +08:00
|
|
|
|
'lucide-vue-next': {},
|
2025-12-11 14:21:36 +08:00
|
|
|
|
axios: {}
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
2025-12-06 14:49:46 +08:00
|
|
|
|
],
|
2025-12-11 14:21:36 +08:00
|
|
|
|
|
|
|
|
|
|
define: {
|
|
|
|
|
|
__VUE_OPTIONS_API__: true,
|
|
|
|
|
|
__VUE_PROD_DEVTOOLS__: true,
|
|
|
|
|
|
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: true
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
resolve: {
|
|
|
|
|
|
alias: {
|
|
|
|
|
|
'@': resolve(__dirname, 'src')
|
|
|
|
|
|
},
|
|
|
|
|
|
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
|
2025-12-02 15:55:30 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
2025-12-11 14:21:36 +08:00
|
|
|
|
build: {
|
|
|
|
|
|
target: 'esnext',
|
|
|
|
|
|
minify: false,
|
|
|
|
|
|
cssCodeSplit: false,
|
2025-12-02 15:55:30 +08:00
|
|
|
|
sourcemap: true,
|
2025-12-11 14:21:36 +08:00
|
|
|
|
rollupOptions: {
|
|
|
|
|
|
output: {
|
|
|
|
|
|
format: 'es'
|
|
|
|
|
|
}
|
2025-12-02 15:55:30 +08:00
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
|
2025-12-11 14:21:36 +08:00
|
|
|
|
server: {
|
2025-12-15 14:50:29 +08:00
|
|
|
|
port: 7000,
|
2025-12-11 14:21:36 +08:00
|
|
|
|
strictPort: true,
|
|
|
|
|
|
host: true,
|
|
|
|
|
|
cors: true,
|
|
|
|
|
|
headers: {
|
|
|
|
|
|
'Access-Control-Allow-Origin': '*',
|
|
|
|
|
|
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
|
|
|
|
|
|
'Access-Control-Allow-Headers': 'Content-Type, Authorization'
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
2025-12-02 15:55:30 +08:00
|
|
|
|
|
2025-12-11 14:21:36 +08:00
|
|
|
|
preview: {
|
2025-12-15 14:50:29 +08:00
|
|
|
|
port: 7000,
|
2025-12-11 14:21:36 +08:00
|
|
|
|
host: true,
|
|
|
|
|
|
cors: true,
|
|
|
|
|
|
headers: {
|
|
|
|
|
|
'Access-Control-Allow-Origin': '*',
|
|
|
|
|
|
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
|
|
|
|
|
|
'Access-Control-Allow-Headers': 'Content-Type, Authorization'
|
|
|
|
|
|
}
|
2025-12-02 15:55:30 +08:00
|
|
|
|
}
|
|
|
|
|
|
})
|