You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.1 KiB
2.1 KiB
TimeSafari Build Modernization Context
Author: Matthew Raymer
Motivation
- Eliminate manual hacks and post-build scripts for Electron builds
- Ensure maintainability, reproducibility, and security of build outputs
- Unify build, test, and deployment scripts for developer experience and CI/CD
Key Technical Decisions
- Vite is the single source of truth for build output
- All Electron build output (main process, preload, renderer HTML/CSS/JS) is managed by
vite.config.electron.mts
- All Electron build output (main process, preload, renderer HTML/CSS/JS) is managed by
- CSS injection for Electron is handled by a Vite plugin
- No more manual HTML/CSS edits or post-build scripts
- Build scripts are unified and robust
- Use
./scripts/build-electron.sh
for all Electron builds - No more
fix-inject-css.js
or similar hacks
- Use
- Output structure is deterministic and ASAR-friendly
- Main process:
dist-electron/main.js
- Preload:
dist-electron/preload.js
- Renderer assets:
dist-electron/www/
(HTML, CSS, JS)
- Main process:
Security & Maintenance Checklist
- All scripts and configs are committed and documented
- No manual file hacks remain
- All build output is deterministic and reproducible
- No sensitive data is exposed in the build process
- Documentation (
BUILDING.md
) is up to date
How to Build Electron
- Run:
./scripts/build-electron.sh
- Output will be in
dist-electron/
:main.js
,preload.js
in rootwww/
contains all renderer assets
- No manual post-processing is required
Customization
- Vite config: All build output and asset handling is controlled in
vite.config.electron.mts
- CSS/HTML injection: Use Vite plugins (see
electron-css-injection
in the config) for further customization - Build scripts: All orchestration is in
scripts/
and documented inBUILDING.md
For Future Developers
- Always use Vite plugins/config for build output changes
- Never manually edit built files or inject assets post-build
- Keep documentation and scripts in sync with the build process
This file documents the context and rationale for the build modernization and should be included in the repository for onboarding and future reference.