forked from trent_larson/crowd-funder-for-time-pwa
- Replace manual CSS injection hack with Vite plugin - Configure Vite to handle both main process and renderer builds - Update build scripts to work with proper Vite output structure - Remove fix-inject-css.js post-build script - Update BUILDING.md documentation - Add build-modernization-context.md for future reference Technical changes: - vite.config.electron.mts: Add electron-css-injection plugin and proper output config - scripts/build-electron.js: Simplify to work with Vite-generated files - BUILDING.md: Update Electron build documentation - doc/build-modernization-context.md: Document context and decisions Security/maintenance improvements: - Eliminate manual file manipulation hacks - Ensure deterministic, reproducible builds - Centralize build logic in Vite configuration - Improve developer experience and CI/CD compatibility Author: Matthew Raymer
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.shfor all Electron builds - No more
fix-inject-css.jsor 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.jsin 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-injectionin 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.