import { defineConfig } from 'vite'; import { VitePluginNode } from 'vite-plugin-node'; export default defineConfig({ root: '.', // 设置根目录 server: { port: 7328, }, build: { outDir: 'dist', rollupOptions: { input: 'src/server/index.ts', output: { // 入口文件命名 entryFileNames: '[name].js', // chunk 文件命名 chunkFileNames: 'chunks/[name]-[hash].js', // 资源文件命名 assetFileNames: 'assets/[name]-[hash].[ext]', // 手动分块策略 manualChunks(id) { // 将 node_modules 中的依赖打包到单独的 chunk if (id.includes('node_modules')) { // 获取包名 const match = id.match(/node_modules\/(@[^\/]+\/[^\/]+|[^\/]+)/); if (match) { const packageName = match[1]; // 排除外部依赖(已经在 external 中配置的) const externalPackages = [ 'express', 'cors', 'helmet', 'morgan', '@mastra/core', 'axios', 'lodash-es', 'zod', '@ai-sdk/deepseek', '@ai-sdk/openai', 'mastra' ]; if (!externalPackages.some(pkg => packageName.startsWith(pkg))) { return `vendor-${packageName.replace('@', '').replace('/', '-')}`; } } // 其他 node_modules 依赖打包到 vendor 中 return 'vendor'; } // 业务代码根据目录结构分块 if (id.includes('src/mastra/')) { return 'mastra'; } if (id.includes('src/server/')) { return 'server'; } } }, // 排除外部依赖,让 Node 运行时加载 external: [ 'express', 'cors', 'helmet', 'morgan', '@mastra/core', 'axios', 'lodash-es', 'zod', '@ai-sdk/deepseek', '@ai-sdk/openai', 'mastra' ] }, }, plugins: VitePluginNode({ adapter: 'express', appPath: './src/server/index.ts', exportName: 'default', }), });