CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-putout--eslint-flat

Utilities for working with ESLint Flat Config format, providing object-based syntax and monorepo configuration management.

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

@putout/eslint-flat

@putout/eslint-flat provides utilities for working with ESLint Flat Config format, offering a more convenient object-based syntax for ESLint configuration management. It simplifies ESLint configuration in monorepos and complex project structures by providing intuitive APIs that reduce boilerplate code and improve maintainability.

Package Information

  • Package Name: @putout/eslint-flat
  • Package Type: npm
  • Language: JavaScript (CommonJS)
  • Installation: npm install @putout/eslint-flat

Core Imports

const { matchToFlat, matchToFlatDir, mergeESLintConfigs, createESLintConfig } = require('@putout/eslint-flat');

Individual imports:

const { matchToFlat } = require('@putout/eslint-flat');
const { matchToFlatDir } = require('@putout/eslint-flat');
const { mergeESLintConfigs } = require('@putout/eslint-flat');
const { createESLintConfig } = require('@putout/eslint-flat');

Basic Usage

const { matchToFlat, matchToFlatDir } = require('@putout/eslint-flat');

// Convert object-based rules to flat config
const match = {
  'bin/cli.js': {
    'n/hashbang': 'off',
  },
  '**/*.spec.js': {
    'n/no-unsupported-features/node-builtins': 'off',
  },
};

const flatConfig = matchToFlat(match);
// Result: [
//   { files: ['bin/cli.js'], rules: { 'n/hashbang': 'off' } },
//   { files: ['**/*.spec.js'], rules: { 'n/no-unsupported-features/node-builtins': 'off' } }
// ]

// Use in monorepo structure
const packageConfig = await matchToFlatDir(__dirname, './packages/my-package');

Architecture

@putout/eslint-flat is built around several key components:

  • Config Transformation: Core utilities (matchToFlat, matchToFlatDir) that convert object-based configurations to ESLint flat config format
  • Monorepo Support: Multi-directory configuration merging (mergeESLintConfigs) for complex project structures
  • Path Handling: Smart file and directory path resolution supporting both regular paths and file:// URLs
  • Legacy Compatibility: Automatic detection and conversion of .eslintrc.json files using ESLint's FlatCompat
  • Utility Functions: Helper function (createESLintConfig) providing convenient access to ESLint's defineConfig

Capabilities

Configuration Transformation

Core functionality for converting object-based ESLint rules to flat config format. Transforms simple key-value rule objects into proper ESLint flat config arrays.

function matchToFlat(config: Object): Array<Object>;

Configuration Transformation

Directory-based Configuration

Advanced configuration building for specific directories, supporting both file paths and file:// URLs. Handles config reading, path resolution, and pattern building for monorepo structures.

async function matchToFlatDir(
  cwd: string | URL,
  path: string,
  config?: Object,
  overrides?: OverrideOptions
): Promise<Array<Object>>;

Directory Configuration

Monorepo Configuration Management

Utilities for merging ESLint configurations across multiple directories in monorepos. Provides bulk configuration processing and flattening.

async function mergeESLintConfigs(
  cwd: string | URL,
  directories: string | Array<string>,
  options?: OverrideOptions
): Promise<Array<Object>>;

function createESLintConfig(configs: Array<Object>): Array<Object>;

Monorepo Management

Types

// Configuration object for simple rule transformation
interface ConfigObject {
  [filePattern: string]: {
    [ruleName: string]: any;
  };
}

// ESLint flat config object structure
interface FlatConfigObject {
  files: Array<string>;
  rules: {
    [ruleName: string]: any;
  };
  ignores?: Array<string>;
}

// Override options for dependency injection
interface OverrideOptions {
  readdir?: (path: string) => Promise<Array<string>>;
}
Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/@putout/eslint-flat@3.0.x
Publish Source
CLI
Badge
tessl/npm-putout--eslint-flat badge