mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-25 19:30:17 +08:00
This commit introduces a new data migration service with various IPC channels for migration tasks, including checking if migration is needed, starting the migration, and tracking progress. Additionally, the database architecture section has been added to the documentation, detailing the use of SQLite with Drizzle ORM, migration standards, and JSON field handling. Legacy migration files for ElectronStore and Redux have been removed as they are now deprecated.
113 lines
3.5 KiB
TypeScript
113 lines
3.5 KiB
TypeScript
import react from '@vitejs/plugin-react-swc'
|
|
import { CodeInspectorPlugin } from 'code-inspector-plugin'
|
|
import { defineConfig, externalizeDepsPlugin } from 'electron-vite'
|
|
import { resolve } from 'path'
|
|
import { visualizer } from 'rollup-plugin-visualizer'
|
|
|
|
const visualizerPlugin = (type: 'renderer' | 'main') => {
|
|
return process.env[`VISUALIZER_${type.toUpperCase()}`] ? [visualizer({ open: true })] : []
|
|
}
|
|
|
|
const isDev = process.env.NODE_ENV === 'development'
|
|
const isProd = process.env.NODE_ENV === 'production'
|
|
|
|
export default defineConfig({
|
|
main: {
|
|
plugins: [externalizeDepsPlugin(), ...visualizerPlugin('main')],
|
|
resolve: {
|
|
alias: {
|
|
'@main': resolve('src/main'),
|
|
'@types': resolve('src/renderer/src/types'),
|
|
'@data': resolve('src/main/data'),
|
|
'@shared': resolve('packages/shared'),
|
|
'@logger': resolve('src/main/services/LoggerService'),
|
|
'@mcp-trace/trace-core': resolve('packages/mcp-trace/trace-core'),
|
|
'@mcp-trace/trace-node': resolve('packages/mcp-trace/trace-node')
|
|
}
|
|
},
|
|
build: {
|
|
rollupOptions: {
|
|
external: ['@libsql/client', 'bufferutil', 'utf-8-validate'],
|
|
output: {
|
|
manualChunks: undefined, // 彻底禁用代码分割 - 返回 null 强制单文件打包
|
|
inlineDynamicImports: true // 内联所有动态导入,这是关键配置
|
|
}
|
|
},
|
|
sourcemap: isDev
|
|
},
|
|
esbuild: isProd ? { legalComments: 'none' } : {},
|
|
optimizeDeps: {
|
|
noDiscovery: isDev
|
|
}
|
|
},
|
|
preload: {
|
|
plugins: [
|
|
react({
|
|
tsDecorators: true
|
|
}),
|
|
externalizeDepsPlugin()
|
|
],
|
|
resolve: {
|
|
alias: {
|
|
'@shared': resolve('packages/shared'),
|
|
'@mcp-trace/trace-core': resolve('packages/mcp-trace/trace-core')
|
|
}
|
|
},
|
|
build: {
|
|
sourcemap: isDev
|
|
}
|
|
},
|
|
renderer: {
|
|
plugins: [
|
|
react({
|
|
tsDecorators: true,
|
|
plugins: [
|
|
[
|
|
'@swc/plugin-styled-components',
|
|
{
|
|
displayName: true, // 开发环境下启用组件名称
|
|
fileName: false, // 不在类名中包含文件名
|
|
pure: true, // 优化性能
|
|
ssr: false // 不需要服务端渲染
|
|
}
|
|
]
|
|
]
|
|
}),
|
|
...(isDev ? [CodeInspectorPlugin({ bundler: 'vite' })] : []), // 只在开发环境下启用 CodeInspectorPlugin
|
|
...visualizerPlugin('renderer')
|
|
],
|
|
resolve: {
|
|
alias: {
|
|
'@renderer': resolve('src/renderer/src'),
|
|
'@shared': resolve('packages/shared'),
|
|
'@logger': resolve('src/renderer/src/services/LoggerService'),
|
|
'@mcp-trace/trace-core': resolve('packages/mcp-trace/trace-core'),
|
|
'@mcp-trace/trace-web': resolve('packages/mcp-trace/trace-web')
|
|
}
|
|
},
|
|
optimizeDeps: {
|
|
exclude: ['pyodide'],
|
|
esbuildOptions: {
|
|
target: 'esnext' // for dev
|
|
}
|
|
},
|
|
worker: {
|
|
format: 'es'
|
|
},
|
|
build: {
|
|
target: 'esnext', // for build
|
|
rollupOptions: {
|
|
input: {
|
|
index: resolve(__dirname, 'src/renderer/index.html'),
|
|
miniWindow: resolve(__dirname, 'src/renderer/miniWindow.html'),
|
|
selectionToolbar: resolve(__dirname, 'src/renderer/selectionToolbar.html'),
|
|
selectionAction: resolve(__dirname, 'src/renderer/selectionAction.html'),
|
|
traceWindow: resolve(__dirname, 'src/renderer/traceWindow.html'),
|
|
dataMigrate: resolve(__dirname, 'src/renderer/dataMigrate.html')
|
|
}
|
|
}
|
|
},
|
|
esbuild: isProd ? { legalComments: 'none' } : {}
|
|
}
|
|
})
|