UNPKG

netlify-identity-widget

Version:

Netlify Identity widget for easy integration

103 lines (72 loc) 3.14 kB
# Release Process This repository uses [release-please](https://github.com/googleapis/release-please) for automated releases with [conventional commits](https://www.conventionalcommits.org/). ## How It Works ### Conventional Commits All commits must follow the conventional commit format: ``` <type>(<scope>): <description> [optional body] [optional footer] ``` **Types:** - `feat:` - New feature (bumps MINOR version) - `fix:` - Bug fix (bumps PATCH version) - `docs:` - Documentation only - `style:` - Code style (formatting, semicolons, etc.) - `refactor:` - Code refactoring - `perf:` - Performance improvement - `test:` - Adding/updating tests - `chore:` - Maintenance tasks **Breaking Changes:** Add `!` after the type or include `BREAKING CHANGE:` in the footer to trigger a MAJOR version bump: ``` feat!: redesign authentication flow ``` ### Release Flow 1. **Merge to main** - Push commits with conventional commit messages 2. **Release PR** - release-please automatically creates/updates a release PR with: - Version bump based on commit types - Auto-generated CHANGELOG 3. **Merge Release PR** - Creates a git tag (e.g., `v2.0.0`) 4. **GitHub Action** - On tag push, the release workflow: - Builds the project - Copies artifacts to `releases/v{major}/` - Commits changes back to main ### CDN Versioning Built assets are deployed to Netlify and served from versioned folders: | Folder | URL | Description | |--------|-----|-------------| | `releases/v1/` | `identity.netlify.com/v1/netlify-identity-widget.js` | Stable v1.x releases | | `releases/v2/` | `identity.netlify.com/v2/netlify-identity-widget.js` | Future v2.x releases | **Important:** The `releases/` folder is only updated via GitHub Actions on tagged releases, not on regular merges to main. This protects existing CDN users from breaking changes. ### Deploy Previews Deploy previews copy build artifacts to `releases/` temporarily so the preview works. This doesn't affect production. ## Prereleases For beta/alpha/rc releases: 1. Create a branch: `releases/<tag>/<version>` (e.g., `releases/beta/2.0.0`) 2. Push to the branch 3. The prerelease workflow automatically: - Builds with version `2.0.0-beta.{run_number}` - Copies to `releases/v2-beta/` - Publishes to npm with `--tag=beta` ### Example Prerelease Branches | Branch | npm Tag | CDN Folder | Version | |--------|---------|------------|---------| | `releases/beta/2.0.0` | `beta` | `v2-beta` | `2.0.0-beta.1`, `2.0.0-beta.2`, ... | | `releases/alpha/2.0.0` | `alpha` | `v2-alpha` | `2.0.0-alpha.1`, `2.0.0-alpha.2`, ... | | `releases/rc/2.0.0` | `rc` | `v2-rc` | `2.0.0-rc.1`, `2.0.0-rc.2`, ... | ## Local Development ### Commit Message Validation Commitlint enforces conventional commits via a git hook. Invalid commits are rejected: ```bash # ❌ Will fail git commit -m "fixed the thing" # ✅ Will pass git commit -m "fix: resolve authentication timeout issue" ``` ### Manual Release (if needed) ```bash # Build and copy to releases folder yarn release ``` This is typically only needed for debugging - normal releases go through release-please.