cherry-studio/electron.vite.config.ts
1600822305 8546219546 网页
2025-04-25 18:43:36 +08:00

125 lines
3.4 KiB
TypeScript

import { sentryVitePlugin } from '@sentry/vite-plugin'
import react from '@vitejs/plugin-react-swc'
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 })] : []
}
export default defineConfig({
main: {
plugins: [
externalizeDepsPlugin({
exclude: [
'@cherrystudio/embedjs',
'@cherrystudio/embedjs-openai',
'@cherrystudio/embedjs-loader-web',
'@cherrystudio/embedjs-loader-markdown',
'@cherrystudio/embedjs-loader-msoffice',
'@cherrystudio/embedjs-loader-xml',
'@cherrystudio/embedjs-loader-pdf',
'@cherrystudio/embedjs-loader-sitemap',
'@cherrystudio/embedjs-libsql',
'@cherrystudio/embedjs-loader-image',
'p-queue',
'webdav'
]
}),
...visualizerPlugin('main')
],
resolve: {
alias: {
'@main': resolve('src/main'),
'@types': resolve('src/renderer/src/types'),
'@shared': resolve('packages/shared')
}
},
build: {
rollupOptions: {
external: ['@libsql/client']
}
}
},
preload: {
plugins: [externalizeDepsPlugin()],
resolve: {
alias: {
'@shared': resolve('packages/shared')
}
},
build: {
rollupOptions: {
input: {
index: resolve('src/preload/index.ts'),
'browser-preload': resolve('src/preload/browser-preload.js')
}
}
}
},
renderer: {
plugins: [
react({
plugins: [
[
'@swc/plugin-styled-components',
{
displayName: process.env.NODE_ENV === 'development', // 仅在开发环境下启用组件名称
fileName: false, // 不在类名中包含文件名
pure: true, // 优化性能
ssr: false // 不需要服务端渲染
}
]
]
}),
// 仅在非CI环境下启用Sentry插件
...(process.env.CI
? []
: [
sentryVitePlugin({
authToken: process.env.SENTRY_AUTH_TOKEN
})
]),
...visualizerPlugin('renderer')
],
resolve: {
alias: {
'@renderer': resolve('src/renderer/src'),
'@shared': resolve('packages/shared')
}
},
// optimizeDeps 配置已移至下方
build: {
rollupOptions: {
input: {
index: resolve('src/renderer/index.html')
},
// 减少打包时的警告输出
onwarn(warning, warn) {
// 忽略某些警告
if (warning.code === 'CIRCULAR_DEPENDENCY') return
warn(warning)
}
},
// 复制ASR服务器文件
assetsInlineLimit: 0,
// 确保复制assets目录下的所有文件
copyPublicDir: true,
// 启用构建缓存
commonjsOptions: {
extensions: ['.js', '.jsx', '.ts', '.tsx'],
// 提高CommonJS模块转换性能
transformMixedEsModules: true
}
},
// 启用依赖预构建缓存
optimizeDeps: {
// 强制预构建这些依赖
include: ['react', 'react-dom', 'styled-components', 'antd', 'lodash'],
// 启用缓存
disabled: false
}
}
})