@vyckr/ttid
Version:
A lightweight, time-based identifier generator that tracks creation, update, and deletion timestamps using a progressive format.
45 lines (33 loc) • 1.86 kB
Markdown
Create a release branch, publish to npm via CI, then merge to main.
1. Run `bun test` and stop if any tests fail.
2. Determine the new version automatically based on unreleased commits:
`git log $(git describe --tags --abbrev=0 2>/dev/null || git rev-list --max-parents=0 HEAD)..HEAD --oneline`
Apply these rules to select the bump type:
- **major** — any commit with a `!` breaking-change marker (e.g. `feat!:`, `fix!:`) or a `BREAKING CHANGE` footer.
- **minor** — one or more `feat:` commits and no breaking changes.
- **patch** — only `fix:`, `chore:`, `docs:`, `refactor:`, `test:`, or `perf:` commits.
Compute the new version by incrementing the corresponding part of the current `"version"` in `package.json` and resetting lower parts to zero. Show the chosen version and the reasoning to the user before proceeding.
3. Update `"version"` in `package.json` to the new version.
4. Fetch the latest main and create a release branch from it:
```
git fetch origin main
git checkout -b release/<version> origin/main
```
5. Stage all changes and commit:
`git add -A && git commit -m "chore: release v<version>"`
6. Push the branch:
`git push -u origin release/<version>`
7. Tell the user that the `publish` workflow will now run on GitHub Actions:
- It verifies the branch name matches `package.json` version.
- It runs tests, publishes to npm, creates a git tag, and opens a GitHub release.
- The NPM_TOKEN secret must be set in repo Settings → Secrets → Actions.
8. Once the workflow passes (user confirms), create a PR and merge it to main:
```
gh pr create --title "chore: release v<version>" --body "Release v<version>" --base main --head release/<version>
gh pr merge --merge --delete-branch
```
9. Switch back to main and pull:
```
git checkout main
git pull
```