or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

cli.mdindex.mdparsers.mdspecials.md
tile.json

specials.mddocs/

Special Configuration Handlers

Special handlers recognize dependencies that are not typically detected by standard parsers. They parse configuration files and detect dependencies used by build tools, linters, test frameworks, and other tooling.

Special Handler Interface

type Special = (
  filePath: string,
  deps: string[],
  rootDir: string
) => Promise<string[]>;

Parameters:

  • filePath: Path to the configuration file being parsed
  • deps: Array of available dependencies to match against
  • rootDir: Project root directory path

Returns: Promise resolving to array of dependency names found in the configuration

Available Special Handlers

Build Tools

// Babel configuration parser
depcheck.special.babel: Special;

// Webpack configuration parser
depcheck.special.webpack: Special;

// Gulp load plugins parser
depcheck.special['gulp-load-plugins']: Special;

// ttypescript transformers parser
depcheck.special.ttypescript: Special;

Linters and Formatters

// ESLint configuration parser
depcheck.special.eslint: Special;

// TSLint configuration parser (deprecated)
depcheck.special.tslint: Special;

// Prettier configuration parser
depcheck.special.prettier: Special;

// Standard.js configuration parser
depcheck.special['feross-standard']: Special;

Test Frameworks

// Jest configuration parser
depcheck.special.jest: Special;

// Mocha configuration parser
depcheck.special.mocha: Special;

// Karma configuration parser
depcheck.special.karma: Special;

Development Tools

// Binary/executable detection
depcheck.special.bin: Special;

// Husky git hooks parser
depcheck.special.husky: Special;

// Lint-staged configuration parser
depcheck.special['lint-staged']: Special;

// Commitizen configuration parser
depcheck.special.commitizen: Special;

// Istanbul/NYC coverage parser
depcheck.special.istanbul: Special;

Framework-Specific

// Gatsby configuration parser
depcheck.special.gatsby: Special;

// Serverless framework parser
depcheck.special.serverless: Special;

// React 17+ JSX transform handler
depcheck.special.react17: Special;

Default Special Configuration

By default, all available specials are enabled:

const defaultSpecials = [
  depcheck.special.babel,
  depcheck.special.bin,
  depcheck.special.commitizen,
  depcheck.special.eslint,
  depcheck.special['feross-standard'],
  depcheck.special.gatsby,
  depcheck.special['gulp-load-plugins'],
  depcheck.special.husky,
  depcheck.special.istanbul,
  depcheck.special.jest,
  depcheck.special.karma,
  depcheck.special['lint-staged'],
  depcheck.special.mocha,
  depcheck.special.prettier,
  depcheck.special.react17,
  depcheck.special.serverless,
  depcheck.special.tslint,
  depcheck.special.ttypescript,
  depcheck.special.webpack
];

Custom Special Configuration

You can customize which special handlers to use:

import depcheck from 'depcheck';

const options = {
  specials: [
    depcheck.special.eslint,
    depcheck.special.webpack,
    depcheck.special.jest
  ]
};

depcheck('/path/to/project', options).then(result => {
  // Only ESLint, Webpack, and Jest configurations will be parsed
});

Special Handler Details

ESLint Handler

Detects dependencies in ESLint configuration files:

  • Configuration files: .eslintrc.*, eslint field in package.json
  • Detects: plugins, parsers, extends configurations, import resolvers
  • Example dependencies found: eslint-plugin-react, @typescript-eslint/parser
// .eslintrc.js
module.exports = {
  extends: ['airbnb', 'plugin:react/recommended'],  // eslint-config-airbnb, eslint-plugin-react
  parser: '@typescript-eslint/parser',               // @typescript-eslint/parser
  plugins: ['import', 'jsx-a11y'],                  // eslint-plugin-import, eslint-plugin-jsx-a11y
  settings: {
    'import/resolver': {
      'webpack': {}  // eslint-import-resolver-webpack
    }
  }
};

Webpack Handler

Detects dependencies in Webpack configuration:

  • Configuration files: webpack.config.*, webpack.*.config.*
  • Detects: loaders, plugins, resolve aliases
  • Example dependencies: babel-loader, css-loader, webpack-dev-server

Jest Handler

Detects dependencies in Jest configuration:

  • Configuration files: jest.config.*, jest field in package.json
  • Detects: test environments, reporters, transform processors, setup files
  • Example dependencies: jest-environment-jsdom, babel-jest

Babel Handler

Detects dependencies in Babel configuration:

  • Configuration files: .babelrc.*, babel.config.*, babel field in package.json
  • Detects: presets, plugins, environments
  • Example dependencies: @babel/preset-env, @babel/plugin-transform-runtime

Binary Handler

Detects dependencies referenced in npm scripts and CI configurations:

  • Files: package.json scripts, .travis.yml, GitHub Actions workflows
  • Detects: CLI tools used in scripts
  • Example dependencies: eslint, webpack-cli, typescript

Configuration File Usage

In .depcheckrc files, specify specials as an array:

{
  "specials": [
    "eslint",
    "webpack", 
    "jest",
    "babel"
  ]
}

Creating Custom Special Handlers

While not part of the public API, the pattern for custom special handlers follows:

async function customSpecial(filePath: string, deps: string[], rootDir: string): Promise<string[]> {
  // Parse configuration file
  // Extract dependency names
  // Return array of dependencies
  return foundDependencies;
}

Note: Custom special handlers are advanced usage and require deep understanding of the configuration format being parsed.