← ClaudeAtlas

tsconfiglisted

Opinionated TypeScript config layout for single-package repos and pnpm monorepos — a strict shared tsconfig.base.json, per-project tsconfig.json with the @/ path alias, a tsconfig.build.json emit variant, and (in a workspace) project references. Auto-applies when editing any tsconfig file.
virajp/ai-plugins · ★ 1 · Data & Documents · score 78
Install: claude install-skill virajp/ai-plugins
# TypeScript Configuration Three layers, each with one job: 1. `tsconfig.base.json` — shared strict compiler settings. 2. `tsconfig.json` — extends base, adds the `@/` alias (+ references in a workspace); used for editor/type-checking (`noEmit`). 3. `tsconfig.build.json` — extends the local config, flips the emit flags on; used by `tsc` and `tsc-alias` to produce `dist/`. This split applies to **any repo shape**. In a **single-package** repo all three files sit at the root and `tsconfig.json` extends `./tsconfig.base.json`. In a **monorepo** `tsconfig.base.json` lives at the repo root and each package's `tsconfig.json` extends it via a relative path and adds project `references` — the extra machinery is called out in each section below. ## tsconfig.base.json (root) Strict, modern, bundler-style resolution, declarations on for project refs: ```jsonc { "compilerOptions": { "strict": true, "target": "ESNext", "lib": ["esnext"], "module": "Preserve", "moduleResolution": "bundler", "moduleDetection": "force", "verbatimModuleSyntax": true, "allowImportingTsExtensions": true, "composite": true, "declaration": true, "declarationMap": true, "noEmit": true, "skipLibCheck": true, "noUncheckedIndexedAccess": true, "noFallthroughCasesInSwitch": true, "noImplicitOverride": true, "noUnusedLocals": true, "noUnusedParameters": true, "types": ["node"], "plugins": [{ "name": "@effect/language-service"