Catalyzer
Architecture

TypeScript Config Package

Shared TypeScript configurations used across all workspaces.

A dedicated configuration package (@workspace/typescript-config) keeps TypeScript settings consistent across the monorepo. Every workspace extends one of its presets.

Directory Structure

base.json
nextjs.json
react-library.json
package.json

Which Config Goes Where

WorkspaceTypeScript Config
apps/nativenextjs.json
apps/webnextjs.json
packages/uireact-library.json
packages/corereact-library.json
packages/i18nbase.json
packages/clibase.json

Base and Presets

Three configs that extend each other:

packages/typescript-config/base.json
{
  "$schema": "https://json.schemastore.org/tsconfig",
  "display": "Default",
  "compilerOptions": {
    "declaration": true,
    "declarationMap": true,
    "esModuleInterop": true,
    "incremental": false,
    "isolatedModules": true,
    "lib": ["es2022", "DOM", "DOM.Iterable"],
    "module": "NodeNext",
    "moduleDetection": "force",
    "moduleResolution": "NodeNext",
    "noUncheckedIndexedAccess": true,
    "resolveJsonModule": true,
    "skipLibCheck": true,
    "strict": true,
    "target": "ES2022"
  }
}

strict: true + noUncheckedIndexedAccess enforces strict type checking. incremental: false is set because Turborepo handles caching.

Usage

apps/web/tsconfig.json
{
  "extends": "@workspace/typescript-config/nextjs.json"
}

Adding a new package? Extend react-library.json for React packages, or base.json for plain TypeScript utilities.

On this page