This commit makes the build process more robust, simplifies configurations and reduce the risk of incomplete or erroneous deployments. - Centralize output directory definitions by introducing `dist-dirs.json`. - Add `verify-build-artifacts` utility to ensure correct build outputs and `print-dist-dir` to determine distribution directory. - Add steps in CI/CD pipeline to verify build artifacts. - Migrate Electron Builder config from YAML to CJS for capability to read JSON. - Fix `release-site.yaml` failing due to pointing to wrong distribution directory, change it to use `print-dist-dir`. - Improve `check-desktop-runtime-errors` to verify build artifacts for more reliable builds. Ensure tests fail and succeed reliably. - Update `.gitignore` and configure ESLint to use it to define and ignore build artifact directories from one place, remove `.eslintignore` that does not add anything after this change. - Keep `"main"` field in `package.json` as `electron-vite` depends on it (alex8088/electron-vite#270). - Improve documentation
check-desktop-runtime-errors
This script automates the processes of:
- Building
- Packaging
- Installing
- Executing
- Verifying Electron distributions
It runs the application for a duration and detects runtime errors in the packaged application via:
- Log verification: Checking application logs for errors and validating successful application initialization.
stderrmonitoring: Continuous listening to thestderrstream for unexpected errors.- Window title inspection: Checking for window titles that indicate crashes before logging becomes possible.
Upon error, the script captures a screenshot (if --screenshot is provided) and terminates.
Options
--build: Clears the electron distribution directory and forces a rebuild of the Electron app.--screenshot: Takes a screenshot of the desktop environment after running the application.
This module provides utilities for building, executing, and validating Electron desktop apps. It can be used to automate checking for runtime errors during development.
Configs
Configurations are defined in config.ts.