Curated ESLint configuration presets for different environments and use cases, available in both legacy and modern flat configuration formats. Each preset includes carefully selected rules, plugins, and settings optimized for specific development scenarios.
Traditional ESLint configuration format (.eslintrc.js) presets.
/**
* Legacy ESLint configuration presets
*/
interface ConfigurationPresets {
/** Browser-specific linting configuration */
browser: ESLintConfig;
/** Internal GitHub-specific rules and settings */
internal: ESLintConfig;
/** General-purpose recommended configuration */
recommended: ESLintConfig;
/** TypeScript-specific linting setup */
typescript: ESLintConfig;
/** React-specific rules and settings */
react: ESLintConfig;
}
interface ESLintConfig {
env?: Record<string, boolean>;
parserOptions?: {
ecmaFeatures?: Record<string, any>;
sourceType?: 'module' | 'script';
ecmaVersion?: number;
};
plugins?: string[];
extends?: string[];
rules: Record<string, ESLintSeverity | [ESLintSeverity, any]>;
settings?: Record<string, any>;
}Usage Examples:
// .eslintrc.js
module.exports = {
extends: [
'plugin:github/recommended',
'plugin:github/browser'
]
};
// Or access individual configs
import eslintPluginGithub from "eslint-plugin-github";
const browserConfig = eslintPluginGithub.configs.browser;Modern ESLint flat configuration format presets for ESLint v9+.
/**
* Flat ESLint configuration presets
*/
interface FlatConfigurationPresets {
/** Browser-specific flat configuration */
browser: FlatESLintConfig;
/** Internal GitHub-specific flat configuration */
internal: FlatESLintConfig;
/** General-purpose recommended flat configuration */
recommended: FlatESLintConfig;
/** TypeScript-specific flat configuration */
typescript: FlatESLintConfig;
/** React-specific flat configuration */
react: FlatESLintConfig;
}
interface FlatESLintConfig {
languageOptions?: {
ecmaVersion?: number;
sourceType?: 'module' | 'script';
globals?: Record<string, boolean>;
parser?: any;
parserOptions?: Record<string, any>;
};
plugins?: Record<string, any>;
rules: Record<string, ESLintSeverity | [ESLintSeverity, any]>;
settings?: Record<string, any>;
}Usage Examples:
// eslint.config.js
import eslintPluginGithub from "eslint-plugin-github";
export default [
eslintPluginGithub.getFlatConfigs().recommended,
eslintPluginGithub.getFlatConfigs().browser
];General-purpose configuration suitable for most JavaScript projects.
/**
* Recommended configuration preset
* Includes: prettier, eslint-comments, import, filenames, i18n-text, no-only-tests plugins
*/
interface RecommendedConfig extends ESLintConfig {
parserOptions: {
ecmaFeatures: { ecmaVersion: 6 };
sourceType: 'module';
};
env: { es6: true };
plugins: string[];
rules: Record<string, ESLintSeverity | [ESLintSeverity, any]>;
}Features:
Usage Examples:
// Legacy format
module.exports = {
extends: ['plugin:github/recommended']
};
// Flat format
import eslintPluginGithub from "eslint-plugin-github";
export default [eslintPluginGithub.getFlatConfigs().recommended];Optimized for browser-based JavaScript applications.
/**
* Browser configuration preset
* Focus: DOM manipulation, browser APIs, accessibility, performance
*/
interface BrowserConfig extends ESLintConfig {
env: { browser: true };
plugins: string[];
extends: string[];
rules: Record<string, ESLintSeverity>;
}Key Rules:
github/async-currenttarget: Errorgithub/async-preventdefault: Errorgithub/no-blur: Errorgithub/no-inner-html: Errorgithub/require-passive-events: Errorimport/no-nodejs-modules: ErrorUsage Examples:
// For browser applications
module.exports = {
extends: ['plugin:github/browser']
};
// Combines well with other configs
module.exports = {
extends: [
'plugin:github/recommended',
'plugin:github/browser'
]
};Specialized configuration for TypeScript projects.
/**
* TypeScript configuration preset
* Includes: TypeScript parser, TypeScript-specific rules
*/
interface TypeScriptConfig extends ESLintConfig {
parser?: string;
parserOptions?: {
project?: string | string[];
ecmaFeatures?: Record<string, any>;
};
plugins: string[];
rules: Record<string, ESLintSeverity | [ESLintSeverity, any]>;
}Usage Examples:
// For TypeScript projects
module.exports = {
extends: [
'plugin:github/recommended',
'plugin:github/typescript'
],
overrides: [
{
files: ['**/*.ts', '**/*.tsx'],
extends: ['plugin:github/typescript']
}
]
};Optimized for React applications with JSX support.
/**
* React configuration preset
* Includes: React-specific rules, JSX accessibility rules
*/
interface ReactConfig extends ESLintConfig {
parserOptions: {
ecmaFeatures: { jsx: true };
};
plugins: string[];
rules: Record<string, ESLintSeverity | [ESLintSeverity, any]>;
}Key Features:
Usage Examples:
// For React projects
module.exports = {
extends: [
'plugin:github/recommended',
'plugin:github/react'
]
};
// With TypeScript
module.exports = {
extends: [
'plugin:github/recommended',
'plugin:github/typescript',
'plugin:github/react'
]
};GitHub-internal configuration with additional rules and stricter settings.
/**
* Internal GitHub configuration preset
* Enhanced rules for internal GitHub development
*/
interface InternalConfig extends ESLintConfig {
plugins: string[];
rules: Record<string, ESLintSeverity | [ESLintSeverity, any]>;
}Usage Examples:
// For internal GitHub projects
module.exports = {
extends: ['plugin:github/internal']
};Configurations can be combined for comprehensive linting coverage.
/**
* Configuration composition examples
*/
interface CompositeConfigurations {
/** Full-stack TypeScript React application */
fullStack: (ESLintConfig | FlatESLintConfig)[];
/** Browser-only JavaScript application */
browserOnly: (ESLintConfig | FlatESLintConfig)[];
/** Node.js TypeScript service */
nodeService: (ESLintConfig | FlatESLintConfig)[];
}Usage Examples:
// Full-stack React TypeScript application
export default [
eslintPluginGithub.getFlatConfigs().recommended,
eslintPluginGithub.getFlatConfigs().typescript,
eslintPluginGithub.getFlatConfigs().react,
{
files: ['**/*.tsx', '**/*.jsx'],
...eslintPluginGithub.getFlatConfigs().browser
}
];
// Legacy format combination
module.exports = {
root: true,
extends: [
'plugin:github/recommended',
'plugin:github/typescript'
],
overrides: [
{
files: ['src/**/*.{ts,tsx}'],
extends: ['plugin:github/react']
},
{
files: ['**/*.browser.{js,ts}'],
extends: ['plugin:github/browser']
}
]
};type ESLintSeverity = 'off' | 'warn' | 'error' | 0 | 1 | 2;
interface ESLintParserOptions {
ecmaVersion?: number | 'latest';
sourceType?: 'module' | 'script';
ecmaFeatures?: {
jsx?: boolean;
globalReturn?: boolean;
impliedStrict?: boolean;
};
project?: string | string[];
tsconfigRootDir?: string;
}
interface ESLintEnvironment {
browser?: boolean;
node?: boolean;
es6?: boolean;
es2020?: boolean;
es2021?: boolean;
worker?: boolean;
serviceworker?: boolean;
}