TypeScript - Project References & Monorepos

Project references

// packages/a/tsconfig.json
{
  "compilerOptions": { "composite": true, "outDir": "dist", "rootDir": "src" },
  "include": ["src"]
}

// packages/b/tsconfig.json
{
  "references": [{ "path": "../a" }],
  "compilerOptions": { "composite": true, "outDir": "dist", "rootDir": "src" },
  "include": ["src"]
}

Build order

Use tsc -b (build mode) at the repo root to build in topological order and leverage incremental caches.

Monorepo tips

  • Keep each package self-contained with its own tsconfig.
  • Emit declarations for library packages.
  • Use path aliases only when necessary; prefer relative imports across packages.