56 lines
1.7 KiB
TypeScript
56 lines
1.7 KiB
TypeScript
import { resolve } from 'node:path'
|
||
import { defineConfig, externalizeDepsPlugin } from 'electron-vite'
|
||
import react from '@vitejs/plugin-react'
|
||
|
||
const root = process.cwd()
|
||
|
||
/**
|
||
* electron 位于 devDependencies,externalizeDepsPlugin 只处理 dependencies,
|
||
* 因此必须显式 external,否则 electron 的 Node 入口会被内联进主进程产物。
|
||
*/
|
||
// node-pty resolves its shipped native/prebuild resources relative to its own package.
|
||
// Preserve that package boundary instead of moving its loader into out/main.
|
||
const builtinsExternal = ['electron', 'node-pty']
|
||
|
||
export default defineConfig({
|
||
main: {
|
||
plugins: [externalizeDepsPlugin()],
|
||
build: {
|
||
rollupOptions: {
|
||
input: resolve(root, 'src/main/index.ts'),
|
||
external: builtinsExternal
|
||
}
|
||
},
|
||
resolve: {
|
||
alias: { '@shared': resolve(root, 'src/shared') }
|
||
}
|
||
},
|
||
preload: {
|
||
plugins: [externalizeDepsPlugin()],
|
||
build: {
|
||
rollupOptions: {
|
||
input: resolve(root, 'src/preload/index.ts'),
|
||
external: builtinsExternal,
|
||
// sandbox: true 的 preload 必须是 CommonJS,ESM preload 只能配 sandbox: false
|
||
output: { format: 'cjs', entryFileNames: 'index.cjs' }
|
||
}
|
||
},
|
||
resolve: {
|
||
alias: { '@shared': resolve(root, 'src/shared') }
|
||
}
|
||
},
|
||
renderer: {
|
||
root: resolve(root, 'src/renderer'),
|
||
plugins: [react()],
|
||
resolve: {
|
||
alias: {
|
||
'@renderer': resolve(root, 'src/renderer/src'),
|
||
'@shared': resolve(root, 'src/shared')
|
||
}
|
||
},
|
||
build: {
|
||
rollupOptions: { input: { index: resolve(root, 'src/renderer/index.html'), settings: resolve(root, 'src/renderer/settings.html') } }
|
||
}
|
||
}
|
||
})
|