2.2 KiB
2.2 KiB
Releasing bird
Target destinations:
- npm:
@steipete/bird - Homebrew: tap formula in
steipete/homebrew-tap(e.g.,bird.rb)
Checklist (npm + GitHub)
-
Version bump
- Update
package.jsonversion(semver, e.g.,0.5.0). - Update
CHANGELOG.mdand tag the release section.
- Update
-
Clean build & tests
pnpm installpnpm testpnpm run build
-
Publish to npm (scoped)
- Ensure you are logged in (
npm whoami). npm publish --access public(from repo root). Package name is@steipete/bird.- Verify:
npm view @steipete/bird versionnpx -y @steipete/bird@<version> --help
- Ensure you are logged in (
-
Git tag & GitHub release
git tag v<version> && git push origin v<version>- Create GitHub release from the tag. Include changelog notes and attach optional binary (see below).
Optional: attach compiled binary
If you want a single-file binary for Homebrew/GitHub assets:
- Build:
pnpm run binary(uses Bun to produce./bird). - Upload
birdto the GitHub release and use it for the Homebrew tarball.
Homebrew tap update (steipete/homebrew-tap)
-
Package the binary
- From repo root:
tar -czf bird-macos-universal-v<version>.tar.gz bird - Compute SHA:
shasum -a 256 bird-macos-universal-v<version>.tar.gz
- From repo root:
-
Update formula in tap repo
- File:
homebrew-tap/bird.rb(create if absent). Model it afterpoltergeist.rb. - Fields to update:
url "https://github.com/steipete/bird/releases/download/v<version>/bird-macos-universal-v<version>.tar.gz"sha256 "<calculated_sha>"version "<version>"
- Install block:
bin.install "bird" test do: minimalassert_match "<version>", shell_output("#{bin}/bird --version")
- File:
-
Push tap changes
git add bird.rb && git commit -m "bird 0.1.0" && git push
Release order suggestion
- Merge to
mainand tag. - Publish npm.
- Build binary, upload to GitHub release.
- Update Homebrew tap with new URL/SHA.
Notes
- Scoped npm name (
@steipete/bird) requires--access publicon first publish. - Homebrew formula assumes macOS universal binary; adjust URL/name if you ship per-arch.
- Config defaults (JSON5) and Safari/Chrome/Firefox cookie selection are documented in
README.md— keep that in sync for each release.