DEVELOPMENT.md
New 7.x releases should be created from release branches originating from the dev branch. If you are doing a 6.x release, please see the v6 section below.
When you are ready to begin the release process:
dev and main branches
git checkout main && git pull origin maingit checkout dev && git pull origin devdev branch
git checkout devrelease-next branch
git checkout -b release-nextrelease-* branch name will work as this is what triggers our GitHub CI workflow that will ultimately publish the release - but we just always use release-nextrelease-v6 for ongoing v6 releasesmain into the release-next branch
git merge --no-ff mainChangesets will do most of the heavy lifting for our releases. When changes are made to the codebase, an accompanying changeset file should be included to document the change. Those files will dictate how Changesets will version our packages and what shows up in the changelogs.
release-next branch
git checkout release-nextpre tag:
pnpm changeset pre enter prerelease-next branch to GitHub
git commit -a -m "Enter prerelease mode"git push --set-upstream origin release-nextrelease-next that will increment all versions and generate the changelogsCHANGELOG.md files, you can do so and commit directly to the PR branch
release-nextX.Y.Z-pre.* packages to npmCHANGELOG.md file in the repo
find packages -name 'CHANGELOG.md' -mindepth 2 -maxdepth 2 -exec code {} \;release-next branch - they will not trigger a new prerelease since they do not include a changesetYou may need to make changes to a pre-release prior to publishing a final stable release. To do so:
release-next and make whatever changes you needpnpm changeset
release-nextrelease-next branchrelease-next and this PR will automatically update in placerelease-next branchX.Y.Z-pre.* packages to npmCHANGELOG.md file in the reporelease-next branch:
pnpm changeset pre exitrelease-next branch to GitHubCHANGELOG files in the PR and make any adjustments necessary
find packages -name 'CHANGELOG.md' -mindepth 2 -maxdepth 2 -exec code {} \;CHANGELOG.md file in the repo because changes have been added with each prereleaserelease-next branchrelease-next branch containing the PR you just mergedrelease-next branch into main using a non-fast-forward merge and push it up to GitHub
git checkout maingit merge --no-ff release-nextgit push origin mainv7.0.0 stable release, there will probably be a bunch of conflicts on docs/**/*.md files here because we have made changes to v6 docs but in dev we removed a lot of those files in favor of auto-generated API docs. To resolve those conflicts, we should accept the deletion from the release-next branch.release-next branch into dev using a non-fast-forward merge and push it up to GitHub
git checkout devgit merge --no-ff release-nextgit push origin dev[email protected] tag to a Release on GitHub with the name v6.x.y and add a deep-link to the release heading in CHANGELOG.mdrelease-next branch locally and on GitHubHotfix releases follow the same process as standard releases above, but the release-next branch should be branched off latest main instead of dev. Once the stable hotfix is published, the release-next branch should be merged back into both main and dev just like a normal release.
6.x releases are managed in a similar process to the above but from the v6 branch, and they do not automatically merge changes back to dev/main.
v6 branch with a changesetdev branch (including the changeset). These changes will make it to main with the next v7 release.v6 instead of devrelease-v6 instead of release-nextmain into release-v6git checkout v6 && git pull origin v6git checkout -b release-v6pnpm changeset pre enter pre-v6release-v6 back to v6 with a Normal Mergerelease-v6 to mainCHANGELOG.md entry to main and dev
packages/*/CHANGELOG.md updates to main for subsequent v6 releasesdev branch
dev already, and if not you can manually bring them over by cherry-picking the commit or re-doing the workExperimental releases and hot-fixes do not need to be branched off of dev. Experimental releases can be branched from anywhere as they are not intended for general use.
git checkout -b release-experimentalgit add . && git commit "experimental changes!"pnpm run version:experimentalgit push origin --follow-tags