Modern Node.js + TypeScript monorepo scaffolded around pnpm, turbo, vitest, eslint, tsup, prettier, commitizen, and changesets.
pnpmworkspaces for deterministic installs and shared lockfilecatalog:versions to keep toolchain upgrades centralizedturbotask graph for build, test, lint, and typecheck orchestrationeslintv10 flat config withtypescript-eslintvitestv4 for fast package-level testingtsupfor dual ESM/CJS package builds with type declarationscommitizen+cz-git+commitlint+husky+lint-stagedfor commit hygienechangesetsfor monorepo versioning and npm publishing
.
├── libs
├── packages
│ └── ui-primitives
├── .changeset
├── .github/workflows
├── eslint.config.mjs
├── pnpm-workspace.yaml
├── tsconfig.base.json
├── tsconfig.library.json
├── tsconfig.node.json
├── turbo.json
└── vitest.workspace.ts
corepack enable
corepack pnpm install
corepack pnpm verifypnpm dev
pnpm lint
pnpm typecheck
pnpm test
pnpm build
pnpm verify
pnpm format
pnpm commit
pnpm changeset
pnpm version-packages
pnpm release- Add a changeset with
pnpm changeset. - Merge to
main. - GitHub Actions opens or updates the release PR.
- Merging the release PR publishes changed public packages to npm.