Files
crowd-funder-for-time-pwa/doc/build-modernization-context.md
Matthew Raymer 89ddfb822b feat: modernize Electron build process with Vite-based CSS injection
- 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
2025-06-25 10:46:11 +00:00

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
  • 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
  • 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)

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

  1. Run:
    ./scripts/build-electron.sh
    
  2. Output will be in dist-electron/:
    • main.js, preload.js in root
    • www/ contains all renderer assets
  3. 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 in BUILDING.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.