CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-fork-ts-checker-webpack-plugin

Runs TypeScript type checker and linter on separate process for webpack builds.

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

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

docs

formatters.md

index.md

issues-filtering.md

plugin-configuration.md

plugin-hooks.md

typescript-configuration.md

tile.json