Implementation:Cypress io Cypress BuildCypressApp
Appearance
| Knowledge Sources | |
|---|---|
| Domains | Build, Release_Engineering |
| Last Updated | 2026-02-12 00:00 GMT |
Overview
Concrete tool for packaging the Cypress Electron application into platform-specific binaries provided by the build scripts and electron-builder.
Description
The buildCypressApp function (scripts/binary/build.ts:L74-115) orchestrates the packaging process. It uses electron-builder configured via electron-builder.json and platform utilities from scripts/binary/meta.ts. The electron-builder configuration specifies file inclusions, hooks (afterPack, afterSign), and platform-specific settings.
Usage
Called during the CI release pipeline to produce platform-specific binaries.
Code Reference
Source Location
- Repository: cypress-io/cypress
- Files:
- scripts/binary/build.ts:L74-115 (buildCypressApp)
- electron-builder.json:L1-27 (packaging config)
- scripts/binary/meta.ts:L1-107 (platform utilities)
Signature
interface BuildCypressAppOpts {
platform: 'darwin' | 'linux' | 'win32'
version: string
skipSigning?: boolean
}
async function buildCypressApp(options: BuildCypressAppOpts): Promise<void>
Import
import { buildCypressApp } from './binary/build'
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| options.platform | string | Yes | Target platform: 'darwin', 'linux', or 'win32' |
| options.version | string | Yes | Version string for the binary |
| options.skipSigning | boolean | No | Skip code signing step |
Outputs
| Name | Type | Description |
|---|---|---|
| Binary | directory | Platform-specific binary in build/<platform>/ |
| Cypress.app | macOS app | macOS application bundle (darwin) |
| linux-unpacked | directory | Linux binary directory |
| win-unpacked | directory | Windows binary directory |
Usage Examples
Build for macOS
await buildCypressApp({
platform: 'darwin',
version: '13.7.0',
})
// Output: build/darwin/Cypress.app
electron-builder.json
{
"appId": "com.electron.cypress",
"productName": "Cypress",
"afterPack": "./scripts/after-pack-hook.js",
"afterSign": "./scripts/after-sign-hook.js",
"files": ["packages/**/*", "cli/**/*"],
"mac": { "target": "dir" },
"linux": { "target": "dir" },
"win": { "target": "dir" }
}
Related Pages
Implements Principle
Requires Environment
Uses Heuristic
Page Connections
Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment