Thanks for helping improve this monorepo! The project is driven by Nx, so most tasks are run through Nx targets that fan out across packages/*.
pnpm installto set up dev deps and Husky.- Create a feature branch off
main. - Use conventional commits (
feat:,fix:,chore:,docs:,refactor:,test:; add!orBREAKING CHANGE:for majors). Nx Release uses them for version bumps. - Run the suite locally before pushing:
pnpm lintpnpm test:coveragepnpm typecheckpnpm build
- Open a PR. CI runs lint/typecheck/tests/build on Node 20 & 22.
- Rebase onto
mainbefore merge to keep linear history. - Merges to
maintrigger the version workflow; tags trigger publish.
pnpm nx run core:lint– Biome for a packagepnpm nx run core:test– Vitest for a package (-- --project coreworks too)pnpm nx run core:typecheck–tsc --noEmitpnpm nx run core:build– Rollup bundle + d.tspnpm nx run core:attw– AreTheTypesWrong pack check- Changelogs live next to each package and are updated automatically by the
Release Versionworkflow.
- Scaffold with
pnpm exec nx g @nx/js:lib <name> --directory=packages/<name> --publishable --importPath=@good-typescript-libraries/<name> --bundler=rollup. - Export API from
src/index.tsand add tests undertest/. - Confirm targets in
packages/<name>/project.json(lint/test/build/typecheck/attw) mirrorcore.
- PRs must keep lint/typecheck/tests/build green.
- Coverage reports are published from Vitest JSON summary (
coverage/core/coverage-summary.json). - Releases:
Release Versionworkflow bumps versions + changelog, pushes tags;Release Publishpublishes tagged packages to npm with provenance.
pnpm install installs hooks. Pre-commit runs lint-staged on staged files under packages/** using Biome in write mode.