or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

formatters.mdindex.mdissues-filtering.mdplugin-configuration.mdplugin-hooks.mdtypescript-configuration.md
tile.json

typescript-configuration.mddocs/

TypeScript Configuration

Advanced TypeScript compiler configuration for controlling how the plugin runs TypeScript type checking. These options provide fine-grained control over memory usage, configuration file handling, build modes, and diagnostic selection.

Capabilities

TypeScript Worker Options

Complete configuration interface for TypeScript compiler behavior.

/**
 * TypeScript worker configuration options
 */
interface TypeScriptWorkerOptions {
  /**
   * Memory limit for the TypeScript worker process in MB
   * Helps prevent out-of-memory errors on large codebases
   */
  memoryLimit?: number;
  
  /**
   * Path to TypeScript configuration file
   * Defaults to tsconfig.json in context directory
   */
  configFile?: string;
  
  /**
   * Configuration overrides to apply on top of tsconfig.json
   */
  configOverwrite?: TypeScriptConfigOverwrite;
  
  /**
   * Base directory for relative paths in TypeScript config
   * Defaults to webpack context directory
   */
  context?: string;
  
  /**
   * Enable TypeScript build mode (project references)
   * Uses TypeScript's build API for project references
   */
  build?: boolean;
  
  /**
   * Worker operating mode for different compilation scenarios
   */
  mode?: 'readonly' | 'write-tsbuildinfo' | 'write-dts' | 'write-references';
  
  /**
   * Diagnostic filtering and selection options
   */
  diagnosticOptions?: Partial<TypeScriptDiagnosticsOptions>;
  
  /**
   * Enable TypeScript performance profiling
   * Useful for debugging performance issues
   */
  profile?: boolean;
  
  /**
   * Path to custom TypeScript installation
   * Defaults to TypeScript resolved from node_modules
   */
  typescriptPath?: string;
}

Memory Limit Configuration

Controls memory allocation for the TypeScript worker process.

/**
 * Memory limit for TypeScript worker process in MB
 * Recommended values:
 * - Small projects (< 100 files): 1024 MB
 * - Medium projects (100-1000 files): 2048 MB  
 * - Large projects (> 1000 files): 4096 MB or higher
 */
memoryLimit?: number;

Usage Examples:

// Conservative memory usage
new ForkTsCheckerWebpackPlugin({
  typescript: {
    memoryLimit: 1024 // 1GB
  }
})

// Large codebase configuration
new ForkTsCheckerWebpackPlugin({
  typescript: {
    memoryLimit: 8192 // 8GB for very large monorepos
  }
})

Configuration File Options

Controls which TypeScript configuration file to use and how to modify it.

/**
 * Path to TypeScript configuration file
 * Can be absolute or relative to context directory
 */
configFile?: string;

/**
 * Configuration overrides to merge with tsconfig.json
 * Applied after loading base configuration
 */
configOverwrite?: TypeScriptConfigOverwrite;

/**
 * Base directory for resolving relative paths
 * Used as base for configFile and other relative paths
 */
context?: string;

Usage Examples:

// Different config files for different environments
new ForkTsCheckerWebpackPlugin({
  typescript: {
    configFile: process.env.NODE_ENV === 'production' 
      ? './tsconfig.prod.json' 
      : './tsconfig.dev.json'
  }
})

// Config overrides
new ForkTsCheckerWebpackPlugin({
  typescript: {
    configFile: './tsconfig.json',
    configOverwrite: {
      compilerOptions: {
        skipLibCheck: true,
        declaration: false
      }
    }
  }
})

// Custom context directory
new ForkTsCheckerWebpackPlugin({
  typescript: {
    context: path.resolve(__dirname, 'src'),
    configFile: '../tsconfig.json'
  }
})

Build Mode Configuration

Enables TypeScript's project references and build mode features.

/**
 * Enable TypeScript build mode for project references
 * Uses TypeScript's build API instead of regular compilation
 * Required for composite projects and project references
 */
build?: boolean;

When to use build mode:

  • Working with TypeScript project references
  • Composite projects with multiple tsconfig.json files
  • Monorepos with interdependent packages
  • Projects using incremental compilation
// Project references setup
new ForkTsCheckerWebpackPlugin({
  typescript: {
    build: true,
    configFile: './tsconfig.json' // Should have "references" array
  }
})

Worker Mode Configuration

Controls how the TypeScript worker operates and what files it writes.

/**
 * Worker operating mode for different compilation scenarios
 */
type WorkerMode = 
  | 'readonly'           // Read-only mode, no file writes
  | 'write-tsbuildinfo' // Write .tsbuildinfo for incremental compilation
  | 'write-dts'         // Write .d.ts declaration files
  | 'write-references'; // Write all output files including references

mode?: WorkerMode;

Mode Usage:

// Development - no file writes for speed
new ForkTsCheckerWebpackPlugin({
  typescript: {
    mode: 'readonly'
  }
})

// Production - generate all outputs
new ForkTsCheckerWebpackPlugin({
  typescript: {
    mode: 'write-references',
    build: true
  }
})

// Incremental builds - write tsbuildinfo only
new ForkTsCheckerWebpackPlugin({
  typescript: {
    mode: 'write-tsbuildinfo'
  }
})

Diagnostic Options

Advanced options for filtering and configuring TypeScript diagnostics.

/**
 * Diagnostic filtering and selection options
 * Provides fine-grained control over which TypeScript diagnostics to report
 */
diagnosticOptions?: Partial<TypeScriptDiagnosticsOptions>;

Common diagnostic configurations:

  • Semantic diagnostics: Type checking errors
  • Syntactic diagnostics: Syntax errors
  • Global diagnostics: Configuration and setup errors
  • Suggestion diagnostics: Code improvement suggestions

Performance Profiling

Enables TypeScript compiler performance profiling for debugging.

/**
 * Enable TypeScript performance profiling
 * Generates performance traces for debugging compilation speed
 */
profile?: boolean;

Usage:

// Debug performance issues
new ForkTsCheckerWebpackPlugin({
  typescript: {
    profile: true,
    memoryLimit: 4096
  }
})

Custom TypeScript Path

Allows using a custom TypeScript installation.

/**
 * Path to custom TypeScript installation
 * Useful for testing with different TypeScript versions
 */
typescriptPath?: string;

Usage Examples:

// Use beta TypeScript version
new ForkTsCheckerWebpackPlugin({
  typescript: {
    typescriptPath: require.resolve('typescript-beta')
  }
})

// Monorepo with shared TypeScript
new ForkTsCheckerWebpackPlugin({
  typescript: {
    typescriptPath: path.resolve(__dirname, '../../node_modules/typescript')
  }
})

Additional Type Definitions

TypeScript Config Overwrite

/**
 * Configuration overrides to merge with tsconfig.json
 * Allows overriding any valid TypeScript configuration option
 */
interface TypeScriptConfigOverwrite {
  /** Extend from another configuration file */
  extends?: string;
  
  /** Compiler options to override or add */
  compilerOptions?: any;
  
  /** Files to include in compilation */
  include?: string[];
  
  /** Files to exclude from compilation */
  exclude?: string[];
  
  /** Specific files to compile */
  files?: string[];
  
  /** Project references for composite projects */
  references?: { path: string; prepend?: boolean }[];
}

TypeScript Diagnostics Options

/**
 * Options for controlling which TypeScript diagnostics to report
 */
interface TypeScriptDiagnosticsOptions {
  /** Enable syntactic diagnostics (syntax errors) */
  syntactic: boolean;
  
  /** Enable semantic diagnostics (type checking errors) */
  semantic: boolean;
  
  /** Enable declaration diagnostics (declaration file errors) */
  declaration: boolean;
  
  /** Enable global diagnostics (configuration errors) */
  global: boolean;
}