80 lines
2.2 KiB
TypeScript
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',
|
|
}),
|
|
});
|