Principle:Cypress io Cypress Package Publishing
| Knowledge Sources | |
|---|---|
| Domains | Release_Engineering, Package_Management |
| Last Updated | 2026-02-12 00:00 GMT |
Overview
A coordinated multi-artifact release mechanism that publishes npm packages and uploads platform-specific binaries to a CDN in a single atomic release operation.
Description
Package publishing for Cypress involves two distinct artifacts: npm packages (the CLI and supporting libraries) and platform-specific binaries (Electron app for macOS/Linux/Windows). Both must be released atomically to ensure version consistency. The npm packages are published via Lerna to the npm registry, while binaries are uploaded to an S3-backed CDN and registered in a version manifest.
The release process also handles the transition from beta to stable: a separate script converts beta npm packages to stable by updating package.json versions and re-publishing.
Usage
Use this principle during the final stage of the Cypress release pipeline, after all tests have passed and binaries are signed.
Theoretical Basis
Release Pipeline:
1. prepare-release-artifacts.js → Copy and prepare files
2. npm-release.js main() →
a. releasePackages() → Lerna publish to npm
b. Verify packages are accessible on npm
3. binary/index.js →
a. deploy.upload() → Upload binary zip to S3 CDN
b. deploy.release() → Update version manifest on S3
4. Verify binary is downloadable