Files
photoai/electron.vite.config.ts
T
koriweb 8a8c10248c Initial commit: AI Photo Organizer (Electron + face-api)
Local-first photo organizer that auto-sorts images by face recognition
and EXIF capture date.

- Electron app with 3-process split: Main (Node) / UI Renderer (React) /
  hidden Inference Renderer (face-api + WebGL)
- Core pipeline: scan -> face match + EXIF -> path build -> atomic move/copy
- Move = copy -> verify -> delete; auto-rename on filename collision
- 1st-registered profile = move, others = copy; unmatched -> [미정]/YYYY/MM
- EXIF date with mtime fallback
- Vitest unit tests (pathBuilder / fileOps / concurrency) all green
- electron-builder config for Windows (nsis) + macOS (dmg)
- Docs: PRD / DECISIONS / ARCHITECTURE

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 13:36:40 +09:00

48 lines
1.1 KiB
TypeScript

import { resolve } from 'node:path'
import { defineConfig, externalizeDepsPlugin } from 'electron-vite'
import react from '@vitejs/plugin-react'
export default defineConfig({
main: {
plugins: [externalizeDepsPlugin()],
resolve: {
alias: { '@shared': resolve('src/shared') }
},
build: {
rollupOptions: {
input: { index: resolve('src/main/index.ts') }
}
}
},
preload: {
plugins: [externalizeDepsPlugin()],
build: {
rollupOptions: {
input: {
index: resolve('src/preload/index.ts'),
inference: resolve('src/preload/inference.ts')
}
}
}
},
renderer: {
root: '.',
resolve: {
alias: {
'@shared': resolve('src/shared'),
'@renderer': resolve('src/renderer')
}
},
plugins: [react()],
build: {
rollupOptions: {
input: {
// UI 창 + 숨김 추론 창, 두 개의 HTML 엔트리
main_window: resolve('src/renderer/index.html'),
inference_window: resolve('src/inference/index.html')
}
}
}
}
})