Releasing
Version bump process
Section titled “Version bump process”Versions are managed manually in packages/semtest/package.json:
{ "version": "0.1.0"}To release a new version:
- Update the
versionfield inpackages/semtest/package.json - Commit and push to
main - The
publish.ymlworkflow builds, tests, and publishes automatically
Dual-registry publishing
Section titled “Dual-registry publishing”semtest publishes to two registries for different purposes:
| Registry | Branch | dist-tag | Audience | Auth required |
|---|---|---|---|---|
| Public npm | main | latest | End users | No |
| GitHub Packages | release | rc | Contributors | Yes (PAT with read:packages) |
Stable releases (public npm)
Section titled “Stable releases (public npm)”Triggered by push to main. Published to https://registry.npmjs.org with the latest tag. After publish, the Homebrew tap is automatically updated.
# End users install with:npm install -g @westopp/semtestRelease candidates (GitHub Packages)
Section titled “Release candidates (GitHub Packages)”Triggered by push to release. Published to https://npm.pkg.github.com with the rc tag. Version is auto-suffixed (e.g. 0.1.0-rc.5).
# Contributors install with (requires .npmrc auth):pnpm add @westopp/semtest@rcDistribution channels
Section titled “Distribution channels”All public channels install from the public npm registry:
| Channel | Command | Use case |
|---|---|---|
| npm | npm install -g @westopp/semtest | Standard global install |
| npx | npx @westopp/semtest run | One-off execution, no install |
| Homebrew | brew install westopp/semtest/semtest | macOS/Linux, manages Node dependency |
| curl | curl -fsSL .../install.sh | bash | Scripted installs, checks prerequisites |
Consuming RC builds
Section titled “Consuming RC builds”To install RC builds from GitHub Packages, configure the @westopp scope:
1. Create a .npmrc file
Section titled “1. Create a .npmrc file”@westopp:registry=https://npm.pkg.github.com//npm.pkg.github.com/:_authToken=YOUR_PAT_HEREReplace YOUR_PAT_HERE with a GitHub PAT that has read:packages scope.
2. Install
Section titled “2. Install”pnpm add @westopp/semtest@rcConsuming stable releases
Section titled “Consuming stable releases”No auth required. Install directly:
npm install -g @westopp/semtestOr use programmatically:
import { defineConfig, loadConfig, executeTests } from "@westopp/semtest";Repository metadata
Section titled “Repository metadata”{ "repository": { "type": "git", "url": "https://github.com/westopp/semtest.git", "directory": "packages/semtest" }}The directory field tells registries that this package lives in a monorepo subdirectory.