MyAgent/vite.config.ts

80 lines
2.2 KiB
TypeScript

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',
}),
});