Building
This guide covers building Peeka2 for development and distribution.
Development Builds
Quick Build
# Build all components
npm run build
This runs all three build processes:
- Main process (TypeScript → CommonJS)
- Preload script (TypeScript → CommonJS)
- Renderer process (Vite build)
Individual Builds
# Build specific components
npm run build:main # Main process only
npm run build:preload # Preload script only
npm run build:renderer # Renderer process only
Build Output
- Main:
dist/main/
- Preload:
dist/preload/
- Renderer:
dist/renderer/
Production Builds
Creating Distributables
# Build and package for current platform
npm run electron:build
# Build for specific platform
npm run electron:build -- --mac
npm run electron:build -- --win
npm run electron:build -- --linux
Output Locations
- Windows:
release/*-Setup-*.exe
- macOS:
release/*.dmg
- Linux:
release/*.AppImage
Build Configuration
Electron Builder Config
Configuration in package.json
:
{
"build": {
"appId": "com.example.peeka2",
"productName": "Peeka2",
"directories": {
"output": "release"
}
}
}
Platform-Specific Settings
Windows
- NSIS installer
- Auto-update support
- Code signing ready
- Start menu integration
macOS
- DMG with custom background
- Code signing configuration
- Notarization ready
- macOS 10.13+ support
Linux
- AppImage format
- Desktop file included
- Menu integration
- Multiple distributions
Build Process
1. TypeScript Compilation
- Strict mode checking
- Type declaration generation
- Source map creation
- Module resolution
2. Vite Building
- Production optimizations
- Code splitting
- Asset optimization
- Minification
3. Electron Packaging
- Native modules compilation
- Asset bundling
- Installer creation
- Code signing (if configured)
Optimization
Bundle Size
- Tree shaking enabled
- Dead code elimination
- Dynamic imports
- Asset compression
Performance
- Lazy loading
- Code splitting
- Minification
- Source map exclusion
Troubleshooting
Common Build Issues
Native Module Errors
# Rebuild native modules
npm rebuild
# Or for Electron specifically
npm run postinstall
Out of Memory
# Increase Node memory
NODE_OPTIONS=--max_old_space_size=4096 npm run build
Permission Errors
# Clean and rebuild
npm run clean
sudo npm run electron:build
Platform-Specific Issues
Windows: Missing Visual Studio
- Install Visual Studio Build Tools
- Include C++ build tools
macOS: Code Signing Failed
- Check Apple Developer certificate
- Verify keychain access
Linux: AppImage Won't Run
chmod +x peeka2-*.AppImage
Continuous Integration
GitHub Actions Setup
name: Build
on: [push, pull_request]
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
Build Matrix
- Multiple Node versions
- All platforms
- Architecture variants
- Release drafts
Release Process
1. Version Bump
npm version patch/minor/major
2. Build All Platforms
# On each platform
npm run electron:build
3. Create Release
- Tag version in Git
- Create GitHub release
- Upload artifacts
- Update documentation
Advanced Configuration
Custom Build Flags
# Debug build
DEBUG=electron-builder npm run electron:build
# Skip code signing
CSC_IDENTITY_AUTO_DISCOVERY=false npm run electron:build
Build Variants
- Portable versions
- MSI installers (Windows)
- Snap packages (Linux)
- Mac App Store builds