v0.1.0: Electron 桌面端骨架 + pi SDK 聊天链路

This commit is contained in:
Rick Ye
2026-09-05 09:28:33 +08:00
commit 17110ee5ab
35 changed files with 5350 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
import { resolve } from 'node:path'
import { defineConfig, externalizeDepsPlugin } from 'electron-vite'
import react from '@vitejs/plugin-react'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({
main: {
// pi SDK 为纯 ESM 包,主进程输出 ESM(Electron ≥28 支持)
plugins: [externalizeDepsPlugin()],
build: {
rollupOptions: {
// electron 保持内置模块导入;pi 全家桶运行时从 node_modules 以 ESM 加载,
// 同时避开 pi 实验性导出引用的未声明子包问题
external: ['electron', /^@earendil-works\//],
output: {
format: 'es',
entryFileNames: '[name].mjs'
}
}
},
resolve: {
alias: {
'@main': resolve(__dirname, 'src/main'),
'@shared': resolve(__dirname, 'src/shared')
}
}
},
preload: {
plugins: [externalizeDepsPlugin()],
build: {
rollupOptions: {
// electron 解析为内置模块,避免把 npm 包打进 preload
external: ['electron'],
output: {
format: 'cjs',
// "type":"module" 下 .js 会被当 ESM 加载,preload 必须用 .cjs
entryFileNames: '[name].cjs'
}
}
},
resolve: {
alias: {
'@shared': resolve(__dirname, 'src/shared')
}
}
},
renderer: {
plugins: [react(), tailwindcss()],
resolve: {
alias: {
'@renderer': resolve(__dirname, 'src/renderer/src'),
'@shared': resolve(__dirname, 'src/shared')
}
}
}
})