- Python 3.10
- Node.js (supported version in
.nvmrc, prefer using fnm for installing) - pnpm (via corepack)
make buildThis will:
- Build font files from source into
fonts/ - Copy and rename fonts for the npm package into
packages/next/dist/fonts/ - Create
geist-font.zipwith all of the fonts neatly packaged together
This project uses Changesets to manage versioning and releases. When changes are merged to main, CI will automatically handle npm publishing and GitHub releases.
When making changes that should be released, add a changeset:
cd packages/next
# If you haven't installed dependencies already:
pnpm install
pnpm changesetYou'll be prompted to:
- Select the type of change (
patch,minor, ormajor- read more about SemVer at semver.org) - Write a summary of the changes
This creates a markdown file in packages/next/.changeset/ describing your change.
- patch: Bug fixes, font corrections, minor adjustments
- minor: New font weights, new features, backward-compatible additions
- major: Breaking changes to the npm package's API or major font structure changes
- On every push: The CI builds fonts and runs tests
- On push to
main:- If there are changeset files, the CI creates a PR titled "changesets: update versions of packages for release"
- When that PR is merged, the CI publishes to npm (named geist) and creates a GitHub release
- An additional step attaches a zip file containing only the relevant font files to the GitHub release
- Create a PR with your changes and a changeset file
- Get the PR reviewed and merged to
main - A PR titled "changesets: update versions of packages for release" will automatically be raised — review and merge it
- Upon merging the PR, CI will automatically publish to npm and create the GitHub release
You can run a beta release from any git ref (branch, SHA, or a PR ref) using the "Beta Release" workflow in GitHub Actions. The ref input is required and can be, for example, my-branch, a1b2c3d, or refs/pull/123/head.
The workflow always enters Changesets prerelease mode (beta), versions packages with -beta.X, publishes to npm under the beta dist-tag, and creates a GitHub prerelease with the font zip attached.
Note: beta releases require at least one changeset file in packages/next/.changeset/.