Getting Started
Automated
Use create-release-plan-setup, see the README over there for detailed instructions.
If you already have a local GITHUB_AUTH token,
npx create-release-plan-setup@latestdoes all the setup for you (aside from repo-configuration (see here))
how to get a GITHUB_AUTH token
You can create a GitHub personal access token here
Or, if you use the gh CLI, you can temporarily expose a token to your local terminal shell via:
export GITHUB_AUTH=$(gh auth token);This command will create
.github/workflows/
- plan-release.yml
- publish.yml
RELEASE.mdwhich is responsible for automating the process that you'd run through manually below.
Manual
npm i --save-dev release-planpnpm add -D release-planyarn add -D release-planTo use release-plan you need to have a valid GITHUB_AUTH environment variable that has the repo permission. This allows release-plan to check what PRs have been merged since the last release and plan the release accordingly.
For new repositories or those without any tags, release-plan also requires an initial tag, we recommend:
git tag v0.0.0
git push origin v0.0.0Run
npx release-plan explain-plan. If there are unlabeled PRs that need to be released it will complain and show you a list of them. Each PR needs to be labeled with one of:- breaking
- enhancement
- bug
- documentation
- internal
Once all the PRs are labeled,
release-planwill instead show you the release plan, explaining which packages are getting released, at which versions, and why.If you disagree with the plan, you can modify the list of changes before using it to
explain-planorpreparea release:npx release-plan gather-changes > /tmp/changelog- edit
/tmp/changelog npx release-plan --from-stdin < /tmp/changelog
For example, this can be necessary if a PR that's labeled
breakingtouches multiple packages and only one of those packages is actually a breaking change. In that case you can take the other package names out of the description of the PR.Once you're happy with the plan, run
npx release-plan prepare. This will edit CHANGELOG.md, bump the version numbers in package.json files, and create a file named.release-plan.json. Make a PR with these changes.Once the PR is merged, in a clean local repo at the merge commit, run
npx release-plan publish. If you need anotpfor your release you can provide that to thepublishcommand like thisnpx release-plan publish --otp=123456