/* * @Author: huirubai * @Date: 2025-08-22 13:11:51 * @Last Modified: huirubai * @Last Modified time: Do not edit */ import vue from '@vitejs/plugin-vue'; import { defineConfig } from 'vite'; import { resolve } from 'path'; import cssInjectedByJsPlugin from 'vite-plugin-css-injected-by-js'; // https://vite.dev/config/ export default defineConfig({ plugins: [ vue(), cssInjectedByJsPlugin({ // 确保样式被注入到所有入口文件 jsAssetsFilterFunction: (outputAsset) => { return outputAsset.fileName.endsWith(".js") && (outputAsset.fileName.includes("-sdk") || outputAsset.fileName.includes("index")); } }) ], resolve: { alias: { '@': '/src', }, }, optimizeDeps: { include: ['vue', 'ant-design-vue'] }, server: { proxy: { '/rag': { target: 'https://jarvis-test.yangqianguan.com', changeOrigin: true, rewrite: (path) => path.replace(/^\/rag/, '') }, }, }, build: { cssCodeSplit: false, // 禁用CSS代码分割,CSS直接注入到JS中 cssMinify: true, // 压缩CSS lib: { entry: { 'cell-button': resolve(__dirname, 'src/components/cell.vue'), 'manual-link': resolve(__dirname, 'src/components/manual-link.vue'), 'copy-button': resolve(__dirname, 'src/components/copy-button.vue'), 'components': resolve(__dirname, 'src/web-components/components.ts'), 'ai-chat-sdk-vue': resolve(__dirname, 'src/sdk/ai-chat-sdk-vue.ts'), 'ai-chat-sdk': resolve(__dirname, 'src/sdk/ai-chat-sdk.ts'), 'help-chat-button-sdk-vue': resolve(__dirname, 'src/sdk/help-chat-button-sdk-vue.ts'), 'help-chat-button-sdk': resolve(__dirname, 'src/sdk/help-chat-button-sdk.ts'), index: resolve(__dirname, 'src/web-components/index.ts') }, name: 'infra-kit', fileName: (format, entryName) => { if (format === 'umd') { return `${entryName}.umd.js`; } return `${entryName}.js`; }, formats: ['es'], }, rollupOptions: { external: (id) => { // 对于SDK,不将Vue和ant-design-vue作为外部依赖 if (id.includes('ai-chat-sdk') || id.includes('help-chat-button-sdk') || id.includes('rag-sdk')) { return false } // 对于其他组件,保持外部依赖 return ['vue', 'ant-design-vue'].includes(id) }, output: { globals: { vue: 'Vue', 'ant-design-vue': 'antd' }, } } }, define: { 'process.env.NODE_ENV': JSON.stringify('production'), }, });