Skip to content

tsconfig presets

Extend a file by its package path. The .json extension is optional, because the package exports both ./tsconfig/*.json and ./tsconfig/*.

tsconfig.json
{
"extends": "@repobuddy/typescript/tsconfig/monorepo",
"compilerOptions": {
"outDir": "esm"
}
}

A preset sets everything a project needs in one file.

Preset Purpose
tsconfig/monorepo A package in a monorepo. Composes six building blocks with an extends array.
tsconfig/legacy/monorepo The same options inlined in one file, for TypeScript older than 5.0 and for tools that cannot follow an extends array.

Each folder under tsconfig/ matches a category of the TSConfig reference. Each file sets a few options for one purpose. buddy.json in a category is the recommended file for that category. Compose them with an extends array (see Compose your own tsconfig).

Category page Files
Diagnostics diagnostics/buddy
Emit emit/buddy, emit/declaration, emit/sourcemap, emit/line-endings
Interop interop/buddy, interop/esm
JavaScript javascript/buddy
Language language/buddy, language/metadata, language/react
Modules modules/buddy, modules/buddy-commonjs, modules/node16, modules/nodenext, modules/commonjs, modules/commonjs-legacy, modules/es2020, modules/es2020-legacy, modules/es2022, modules/ui-assets
Projects projects/composite, projects/large-project
Type checking type-checking/recommended, type-checking/buddy, type-checking/buddy-strictest

Each file was extended on its own and compiled with TypeScript 6.0.3 and 7.0.2. Three files report an error:

File TypeScript 6.0.3 TypeScript 7.0.2
language/metadata TS5052: needs experimentalDecorators Same
modules/commonjs-legacy TS5110: module must be Node16 when moduleResolution is Node16 Same
modules/es2020-legacy TS5107: moduleResolution=node10 is deprecated TS5108: moduleResolution=node10 has been removed

language/metadata works once your config also sets experimentalDecorators: true. The two legacy module files are for TypeScript versions older than these.