Skip to content

Latest commit

 

History

History
52 lines (37 loc) · 1.71 KB

CONTRIBUTING.md

File metadata and controls

52 lines (37 loc) · 1.71 KB

Contributing

pnpm install
pnpm typecheck
pnpm test          # unit tests; the playground integration test needs that repo checked out
pnpm lint:js       # oxlint; `pnpm lint:js:fix` applies what it can
pnpm format:check  # oxfmt; `pnpm format` rewrites
pnpm build         # rolldown -> dist/index.js

Tests

Unit tests sit next to the code in src/. Anything that needs a real repository lives in test/, against fixtures in test/fixtures/: each shape is built once per run and copied per test, so a test may commit and tag freely without paying to rebuild the history.

test/integration.local.test.ts drives the playground checkout and skips itself when that repository is absent, so it runs locally and not in CI.

Changesets

Every user-facing change needs a changeset — this action reads them to attribute a release, so a missing one means the PR goes unmentioned in its own comments.

pnpm changeset

Write the body as a conventional-commit title, then a short description only if the title leaves something unsaid:

---
'changesets-release-commenter': minor
---

feat: credit the action in a comment footer

Sits before the hidden marker, so a thread carrying a comment from an earlier version still
deduplicates.

The title becomes the CHANGELOG entry, so it reads best in the same shape as the commit log.

Releasing

dist/ is gitignored and never lives on main. A release commits it through the API as a child of main's HEAD, so GitHub signs it, and tags that commit vX.Y.Z. Publishing the release moves the vX tag to it, so the major ref always points at a built bundle.

pnpm bump and pnpm release drive that from CI; neither is meant to be run by hand on a clone.