A throwaway monorepo for exercising release-champion's
npm-workspaces publishing end-to-end.
package.json ← private root, declares "workspaces": ["packages/*"]
packages/
hello/ ← @offload-project/hello
world/ ← @offload-project/world
.github/workflows/
release.yml ← runs release-champion on merged PRs
Both packages get bumped to the same version and published together whenever a PR is merged.
- Rename the packages. Replace
@offload-projectinpackages/hello/package.jsonandpackages/world/package.jsonwith a real npm scope you own (e.g. your npm username:@yourname). Scoped names are published with--access publicautomatically. - Add an npm token. Create an automation token on npmjs.com and add it as a repo secret named
NPM_TOKEN(Settings → Secrets and variables → Actions). Or switch the workflow to Trusted Publishers (OIDC) instead. - Push this to its own GitHub repo. This is a separate project from the action — give it its own remote.
- Make a change on a branch with a conventional-commit message, e.g.:
git commit -am "feat: add a greeting" - Open a PR and merge it. release-champion opens a release PR (Phase 1) with both packages bumped.
- Merge the release PR. release-champion tags it and publishes both packages to npm (Phase 2).
- Confirm on npmjs.com that
helloandworldboth appear at the new version.
- The root
package.jsonhas"private": true, so it is bumped but never published — only the two packages are. - Both packages always share one version, even if only one changed. That's "fixed/locked" versioning.