A modern TypeScript monorepo built with:
- 🧱 PNPM workspaces
- 🔧 TypeScript + Tsup (per package builds)
- 🧪 Vitest (testing per lib/app)
- 🧼 ESLint + Prettier
- 📦 Changesets (versioning + release)
- 🤖 GitHub Actions (CI/CD)
packages/ → reusable libraries
apps/ → deployable applications
Install dependencies:
pnpm install
Build everything:
pnpm build
Run an app (e.g. demo):
pnpm --filter @myorg/demo-app dev
| Command | What it does |
|---|---|
pnpm build |
Build all apps/libs |
pnpm dev |
Run dev mode for all packages |
pnpm test |
Run tests across the monorepo |
pnpm test:ui |
Run tests with UI |
pnpm lint |
Lint all packages |
pnpm format |
Format all packages |
pnpm clean |
Clean all dist folders |
pnpm type-check |
Type check all packages |
For a package named @myorg/assistant-core:
| Command | What it does |
|---|---|
pnpm @myorg/assistant-core:build |
Build specific package |
pnpm @myorg/assistant-core:dev |
Run dev mode for specific package |
pnpm @myorg/assistant-core:test |
Test specific package |
pnpm @myorg/assistant-core:lint |
Lint specific package |
pnpm @myorg/assistant-core:format |
Format specific package |
pnpm @myorg/assistant-core:clean |
Clean specific package |
pnpm @myorg/assistant-core:type-check |
Type check specific package |
| Command | What it does |
|---|---|
monokit init <name> |
Initialize new monorepo |
monokit add lib <name> |
Add a new library |
monokit add app <name> |
Add a new application |
monokit switch <pkg> <type> <mode> |
Toggle local/remote deps |
This repo uses Changesets for publishing packages.
To publish:
-
Create a changeset:
pnpm changeset
-
Version packages:
pnpm version-packages
-
Push a tag:
git tag v1.0.0
git push origin v1.0.0 -
GitHub Actions will publish changed packages to npm.
Make sure NPM_TOKEN is set in GitHub secrets.
Create an issue or pull request. Templates are provided in .github/.