Utilities for working with ESLint Flat Config format, providing object-based syntax and monorepo configuration management.
npx @tessl/cli install tessl/npm-putout--eslint-flat@3.0.0@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.
npm install @putout/eslint-flatconst { 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');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');@putout/eslint-flat is built around several key components:
matchToFlat, matchToFlatDir) that convert object-based configurations to ESLint flat config formatmergeESLintConfigs) for complex project structurescreateESLintConfig) providing convenient access to ESLint's defineConfigCore 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>;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>>;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>;// 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>>;
}