or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

framework-configurations.mdgeneral-configurations.mdindex.mdnode-configurations.mdruntime-configurations.md
tile.json

tessl/github-tsconfig--bases

Centralized TypeScript configuration presets for various runtime environments and frameworks, providing community-maintained TSConfigs for consistent project setup

Workspace
tessl
Visibility
Public
Created
Last updated
Describes

pkg:github/tsconfig/bases@main

To install, run

npx @tessl/cli install tessl/github-tsconfig--bases@1.0.0

index.mddocs/

TSConfig Bases

Centralized 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.

Package Information

  • Repository Name: tsconfig/bases
  • Repository Type: GitHub
  • Language: TypeScript Configuration (JSON)
  • Purpose: Provides base TSConfig files that generate individual npm packages

Core Usage

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"]
}

Basic Usage

  1. Choose the appropriate TSConfig base for your environment
  2. Install the corresponding npm package as a development dependency
  3. Extend the configuration in your project's tsconfig.json

Example 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"]
}

Architecture

The repository is structured around several key components:

  • Base Configurations: JSON files in the bases/ directory, each targeting a specific environment
  • Package Generation: Automated scripts that create individual npm packages from base configurations
  • Template System: Shared package.json and README templates for generated packages
  • Deployment Pipeline: GitHub Actions that publish updated configurations

Each base configuration includes:

  • Target Environment: Specific runtime (Node.js version, framework, etc.)
  • Compiler Options: Optimized TypeScript settings for that environment
  • Library Support: Appropriate lib declarations and module systems
  • Metadata: Version tracking and display information

Capabilities

Node.js Configurations

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;
}

Node.js Configurations

Framework Configurations

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;
}

Framework Configurations

Runtime Configurations

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;
}

Runtime Configurations

General Purpose Configurations

Standard configurations for common development patterns and strictness levels.

// General purpose configurations
interface GeneralConfigurations {
  /** Community recommended settings */
  "recommended": TSConfigBase;
  
  /** Maximum strictness settings */
  "strictest": TSConfigBase;
}

General Configurations

Configuration Schema

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;
}

Package Generation System

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;
  };
}