forked from trent_larson/crowd-funder-for-time-pwa
refactor: implement clean modular Electron build system
Replace chained npm commands with single build-electron.sh script supporting multiple build modes (dev/test/prod), platforms (windows/mac/linux), and package types (appimage/deb/dmg). Add platform validation to prevent cross-platform build issues and integrate cleaning functionality. - Replace 15+ chained npm scripts with single modular build script - Add platform detection and validation with early failure on mismatch - Support environment-specific builds (development/test/production) - Add comprehensive documentation in docs/electron-build-patterns.md - Update BUILDING.md with new build patterns and examples - Remove legacy electron:build:* scripts and consolidate under build:electron:* - Add clean:electron script integrated into build process - Improve error handling and user feedback throughout build process This refactoring follows DRY principles, eliminates command chaining, and provides a more maintainable and user-friendly build system.
This commit is contained in:
42
package.json
42
package.json
@@ -9,7 +9,6 @@
|
||||
"lint": "eslint --ext .js,.ts,.vue --ignore-path .gitignore src",
|
||||
"lint-fix": "eslint --ext .js,.ts,.vue --ignore-path .gitignore --fix src",
|
||||
"prebuild": "eslint --ext .js,.ts,.vue --ignore-path .gitignore src && node sw_combine.js && node scripts/copy-wasm.js",
|
||||
"test:all": "./scripts/test-all.sh",
|
||||
"test:prerequisites": "node scripts/check-prerequisites.js",
|
||||
"test:web": "npx playwright test -c playwright.config-local.ts --trace on",
|
||||
"test:mobile": "./scripts/test-mobile.sh",
|
||||
@@ -31,21 +30,38 @@
|
||||
"docker:up:prod": "npm run build:web:build -- --mode production && docker-compose up production",
|
||||
"docker:down": "docker-compose down",
|
||||
"docker:logs": "docker-compose logs -f",
|
||||
"build:electron": "VITE_GIT_HASH=`git log -1 --pretty=format:%h` vite build --mode electron --config vite.config.electron.mts",
|
||||
"electron:dev": "npm run build:electron && npx cap copy electron && cd electron && npm run electron:start",
|
||||
"electron:setup": "./scripts/setup-electron.sh",
|
||||
"electron:dev-full": "./scripts/electron-dev.sh",
|
||||
"electron:build": "npm run build:electron && npx cap copy electron && cd electron && ./build-packages.sh",
|
||||
"electron:build:appimage": "npm run build:electron && npx cap copy electron && cd electron && ./build-packages.sh appimage",
|
||||
"electron:build:deb": "npm run build:electron && npx cap copy electron && cd electron && ./build-packages.sh deb",
|
||||
"build:electron": "./scripts/build-electron.sh",
|
||||
"build:electron:dev": "./scripts/build-electron.sh --dev",
|
||||
"build:electron:test": "./scripts/build-electron.sh --test",
|
||||
"build:electron:prod": "./scripts/build-electron.sh --prod",
|
||||
"build:electron:windows": "./scripts/build-electron.sh --prod --windows",
|
||||
"build:electron:windows:dev": "./scripts/build-electron.sh --dev --windows",
|
||||
"build:electron:windows:test": "./scripts/build-electron.sh --test --windows",
|
||||
"build:electron:windows:prod": "./scripts/build-electron.sh --prod --windows",
|
||||
"build:electron:mac": "./scripts/build-electron.sh --prod --mac",
|
||||
"build:electron:mac:dev": "./scripts/build-electron.sh --dev --mac",
|
||||
"build:electron:mac:test": "./scripts/build-electron.sh --test --mac",
|
||||
"build:electron:mac:prod": "./scripts/build-electron.sh --prod --mac",
|
||||
"build:electron:linux": "./scripts/build-electron.sh --prod --linux",
|
||||
"build:electron:linux:dev": "./scripts/build-electron.sh --dev --linux",
|
||||
"build:electron:linux:test": "./scripts/build-electron.sh --test --linux",
|
||||
"build:electron:linux:prod": "./scripts/build-electron.sh --prod --linux",
|
||||
"build:electron:appimage": "./scripts/build-electron.sh --prod --appimage",
|
||||
"build:electron:appimage:dev": "./scripts/build-electron.sh --dev --appimage",
|
||||
"build:electron:appimage:test": "./scripts/build-electron.sh --test --appimage",
|
||||
"build:electron:appimage:prod": "./scripts/build-electron.sh --prod --appimage",
|
||||
"build:electron:deb": "./scripts/build-electron.sh --prod --deb",
|
||||
"build:electron:deb:dev": "./scripts/build-electron.sh --dev --deb",
|
||||
"build:electron:deb:test": "./scripts/build-electron.sh --test --deb",
|
||||
"build:electron:deb:prod": "./scripts/build-electron.sh --prod --deb",
|
||||
"build:electron:dmg": "./scripts/build-electron.sh --prod --dmg",
|
||||
"build:electron:dmg:dev": "./scripts/build-electron.sh --dev --dmg",
|
||||
"build:electron:dmg:test": "./scripts/build-electron.sh --test --dmg",
|
||||
"build:electron:dmg:prod": "./scripts/build-electron.sh --prod --dmg",
|
||||
"clean:android": "adb uninstall app.timesafari.app || true",
|
||||
"clean:electron": "rm -rf electron/app/* electron/dist/* || true",
|
||||
"clean:ios": "rm -rf ios/App/build ios/App/Pods ios/App/output ios/App/App/public ios/DerivedData ios/capacitor-cordova-ios-plugins ios/App/App/capacitor.config.json ios/App/App/config.xml || true",
|
||||
"clean:electron": "./scripts/build-electron.sh --clean",
|
||||
"build:android": "./scripts/build-android.sh",
|
||||
"build:electron:all": "./scripts/build-electron.sh",
|
||||
"build:electron:package": "./scripts/build-electron.sh --package",
|
||||
"build:electron:appimage": "./scripts/build-electron.sh --appimage",
|
||||
"build:electron:deb": "./scripts/build-electron.sh --deb",
|
||||
"fastlane:ios:beta": "cd ios && fastlane beta",
|
||||
"fastlane:ios:release": "cd ios && fastlane release",
|
||||
"fastlane:android:beta": "cd android && fastlane beta",
|
||||
|
||||
Reference in New Issue
Block a user