All the checks
$ pnpm check
$ pnpm check:ci
Individual checks
$ pnpm lint
$ pnpm lint --fix
$ pnpm test
We use changesets to create package versions and publish them.
Our official release path is to use automation to perform the actual publishing of our packages. The steps are to:
- A human developer adds a changeset. Ideally this is as a part of a PR that will have a version impact on a package.
- On merge of a PR our automation system opens a "Version Packages" PR.
- On merging the "Version Packages" PR, the automation system publishes the packages.
Here are more details:
When you would like to add a changeset (which creates a file indicating the type of change), in your branch/PR issue this command:
$ pnpm changeset
to produce an interactive menu. Navigate the packages with arrow keys and hit <space>
to select 1+ packages. Hit <return>
when done. Select semver versions for packages and add appropriate messages. From there, you'll be prompted to enter a summary of the change. Some tips for this summary:
- Aim for a single line, 1+ sentences as appropriate.
- Include issue links in GH format (e.g.
#123
). - You don't need to reference the current pull request or whatnot, as that will be added later automatically.
After this, you'll see a new uncommitted file in .changesets
like:
$ git status
# ....
Untracked files:
(use "git add <file>..." to include in what will be committed)
.changeset/flimsy-pandas-marry.md
Review the file, make any necessary adjustments, and commit it to source. When we eventually do a package release, the changeset notes and version will be incorporated!
On a merge of a feature PR, the changesets GitHub action will open a new PR titled "Version Packages"
. This PR is automatically kept up to date with additional PRs with changesets. So, if you're not ready to publish yet, just keep merging feature PRs and then merge the version packages PR later.
On the merge of a version packages PR, the changesets GitHub action will publish the packages to npm.
For exceptional circumstances, here is a quick guide to manually publishing from a local computer using changesets.
-
Add a changeset with
pnpm changeset
. Add changeset file, review file, tweak, and commit. -
Make a version. Due to our changelog plugin you will need to create a personal GitHub token and pass it to the environment.
$ GITHUB_TOKEN=<INSERT TOKEN> pnpm run version
Review git changes, tweak, and commit.
-
Publish.
First, build necessary files:
# Build everything $ pnpm run build
Then publish:
# Test things out first $ pnpm -r publish --dry-run # The real publish # This first does a single git tag (if not already present), then publishes $ pnpm run publish --otp=<insert otp code>
Note that publishing multiple pacakges via
changeset
to npm with an OTP code can often fail with429 Too Many Requests
rate limiting error. Take a 5+ minute coffee break, then come back and try again.Then issue the following to also push git tags:
$ git push && git push --tags