Centralized TypeScript configuration presets for various runtime environments and frameworks, providing community-maintained TSConfigs for consistent project setup
pkg:github/tsconfig/bases@main
npx @tessl/cli install tessl/github-tsconfig--bases@1.0.0Centralized TypeScript configuration presets for various runtime environments and frameworks. This repository provides community-maintained TSConfigs that developers can extend in their projects, offering optimized compiler options for specific environments like Node.js, React, Next.js, and many others.
Each TSConfig base in this repository becomes a separate npm package under the @tsconfig/ namespace. Install and extend the configuration that matches your target environment:
{
"extends": "@tsconfig/node20/tsconfig.json"
}Multiple configurations can be extended (TypeScript 5.0+):
{
"extends": ["@tsconfig/node20/tsconfig.json", "@tsconfig/strictest/tsconfig.json"]
}tsconfig.jsonExample for Node.js 20:
npm install --save-dev @tsconfig/node20{
"extends": "@tsconfig/node20/tsconfig.json",
"compilerOptions": {
"outDir": "./dist",
"rootDir": "./src"
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}The repository is structured around several key components:
bases/ directory, each targeting a specific environmentEach base configuration includes:
Comprehensive TypeScript configurations for different Node.js versions and deployment strategies.
// Available Node.js configurations
interface NodeConfigurations {
/** Long Term Support - currently Node.js 22 */
"node-lts": TSConfigBase;
/** TypeScript-specific Node.js settings (TS 5.8+) */
"node-ts": TSConfigBase;
/** Specific Node.js versions */
"node10": TSConfigBase;
"node12": TSConfigBase;
"node14": TSConfigBase;
"node16": TSConfigBase;
"node17": TSConfigBase;
"node18": TSConfigBase;
"node19": TSConfigBase;
"node20": TSConfigBase;
"node21": TSConfigBase;
"node22": TSConfigBase;
"node23": TSConfigBase;
"node24": TSConfigBase;
}TypeScript configurations optimized for popular JavaScript frameworks and build tools.
// Available framework configurations
interface FrameworkConfigurations {
/** Next.js applications */
"next": TSConfigBase;
/** Create React App projects */
"create-react-app": TSConfigBase;
/** React Native applications */
"react-native": TSConfigBase;
/** Remix applications */
"remix": TSConfigBase;
/** Vite + React projects */
"vite-react": TSConfigBase;
/** Svelte applications */
"svelte": TSConfigBase;
/** Nuxt.js applications */
"nuxt": TSConfigBase;
/** Taro mini-program framework */
"taro": TSConfigBase;
/** Ember.js applications */
"ember": TSConfigBase;
/** Docusaurus v2 documentation sites */
"docusaurus": TSConfigBase;
}Configurations for alternative JavaScript runtimes and testing frameworks.
// Available runtime configurations
interface RuntimeConfigurations {
/** Bun runtime */
"bun": TSConfigBase;
/** Deno runtime */
"deno": TSConfigBase;
/** QJSEngine runtime */
"qjsengine": TSConfigBase;
/** Cypress testing framework */
"cypress": TSConfigBase;
}Standard configurations for common development patterns and strictness levels.
// General purpose configurations
interface GeneralConfigurations {
/** Community recommended settings */
"recommended": TSConfigBase;
/** Maximum strictness settings */
"strictest": TSConfigBase;
}All TSConfig bases follow a consistent schema structure:
interface TSConfigBase {
/** JSON Schema validation */
$schema: "https://json.schemastore.org/tsconfig";
/** Human-readable display name */
display: string;
/** Configuration version identifier */
_version: string;
/** TypeScript compiler options */
compilerOptions: CompilerOptions;
/** File inclusion patterns (optional) */
include?: string[];
/** File exclusion patterns (optional) */
exclude?: string[];
/** TypeScript plugins (optional) */
plugins?: Plugin[];
}
interface CompilerOptions {
/** Compilation target */
target?: "es5" | "es2015" | "es2016" | "es2017" | "es2018" | "es2019" | "es2020" | "es2021" | "es2022" | "esnext";
/** Module system */
module?: "commonjs" | "esnext" | "nodenext" | "umd" | "amd" | "system";
/** Module resolution strategy */
moduleResolution?: "node" | "node16" | "bundler";
/** Library declarations to include */
lib?: string[];
/** Enable strict type checking */
strict?: boolean;
/** Enable ES module interoperability */
esModuleInterop?: boolean;
/** Skip type checking of declaration files */
skipLibCheck?: boolean;
/** JSX compilation mode */
jsx?: "preserve" | "react" | "react-jsx" | "react-jsxdev" | "react-native";
/** Additional compiler options */
[key: string]: any;
}The repository includes automated tooling for generating npm packages:
interface PackageGenerationSystem {
/** Converts base configurations to npm packages */
"scripts/create-npm-packages.ts": GenerationScript;
/** Deploys changed packages to npm */
"scripts/deploy-changed-npm-packages.ts": DeploymentScript;
/** Updates README with configuration table */
"scripts/update-markdown-readme.ts": DocumentationScript;
/** Generates recommended TSConfig */
"scripts/generate-recommend.ts": RecommendationScript;
/** Generates LTS configuration */
"scripts/generate-lts.ts": LTSScript;
}
interface GenerationScript {
/** Creates individual npm packages from base configurations */
execute(): Promise<void>;
/** Package creation process */
process: {
/** Read base configuration files */
readBases(): TSConfigBase[];
/** Generate package.json for each base */
createPackageJson(base: TSConfigBase): PackageJson;
/** Copy template files */
copyTemplates(packagePath: string): void;
/** Apply string replacements */
applyReplacements(files: string[], base: TSConfigBase): void;
};
}