CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-eslint-webpack-plugin

A webpack plugin that integrates ESLint into the build process to lint JavaScript code with extensive configuration options, caching, and multi-threading support.

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

index.mddocs/

ESLint Webpack Plugin

ESLint Webpack Plugin integrates ESLint into the Webpack build process to automatically lint JavaScript code during compilation. It provides comprehensive linting capabilities with advanced features including caching, multi-threading support, custom formatters, and flexible error/warning handling.

Package Information

  • Package Name: eslint-webpack-plugin
  • Package Type: npm
  • Language: JavaScript/TypeScript
  • Installation: npm install eslint-webpack-plugin --save-dev

Core Imports

const ESLintPlugin = require('eslint-webpack-plugin');

ESM import:

import ESLintPlugin from 'eslint-webpack-plugin';

TypeScript:

import ESLintPlugin from 'eslint-webpack-plugin';

Basic Usage

const ESLintPlugin = require('eslint-webpack-plugin');

module.exports = {
  // ... other webpack configuration
  plugins: [
    new ESLintPlugin({
      extensions: ['js', 'mjs', 'jsx', 'ts', 'tsx'],
      fix: true,
    }),
  ],
};

Architecture

ESLint Webpack Plugin is built around several key components:

  • Plugin Class: Main ESLintWebpackPlugin class that implements the webpack plugin interface
  • Options System: Comprehensive configuration system with both plugin-specific and ESLint-specific options
  • Caching Layer: Intelligent caching system to optimize repeated builds
  • Multi-threading: Jest worker-based parallel processing for improved performance
  • Webpack Integration: Deep integration with webpack's compilation hooks and lifecycle

Capabilities

ESLint Webpack Plugin Class

Main plugin class that integrates ESLint into the webpack build process with extensive configuration options and performance optimizations. This is the default export of the package.

export = ESLintWebpackPlugin;

declare class ESLintWebpackPlugin {
  constructor(options?: Options);
  key: string;
  options: PluginOptions;
  apply(compiler: Compiler): void;
  run(
    compiler: Compiler,
    options: Omit<Options, 'resourceQueryExclude'> & {
      resourceQueryExclude: RegExp[];
    },
    wanted: string[],
    exclude: string[]
  ): Promise<void>;
  getContext(compiler: Compiler): string;
}

type Compiler = import('webpack').Compiler;

Plugin Configuration

Comprehensive configuration system supporting both plugin-specific options and all ESLint options with intelligent defaults and validation.

interface Options extends PluginOptions, ESLintOptions {}

interface PluginOptions {
  context?: string;
  emitError?: boolean;
  emitWarning?: boolean;
  eslintPath?: string;
  exclude?: string | string[];
  extensions?: string | string[];
  failOnError?: boolean;
  failOnWarning?: boolean;
  files?: string | string[];
  fix?: boolean;
  formatter?: string | FormatterFunction;
  lintDirtyModulesOnly?: boolean;
  quiet?: boolean;
  outputReport?: OutputReport;
  threads?: number | boolean;
  resourceQueryExclude?: RegExp | RegExp[];
  configType?: string;
}

Configuration Options

Types

interface OutputReport {
  filePath?: string;
  formatter?: string | FormatterFunction;
}

type FormatterFunction = (results: LintResult[]) => string;

type ESLintOptions = import('eslint').ESLint.Options;
type LintResult = import('eslint').ESLint.LintResult;

docs

index.md

options.md

tile.json