Airbnb's comprehensive ESLint configuration as an extensible shared config for JavaScript and React projects
npx @tessl/cli install tessl/npm-eslint-config-airbnb@19.0.0ESLint Config Airbnb provides Airbnb's comprehensive ESLint configuration as an extensible shared config for JavaScript and React projects. It includes ESLint rules for ECMAScript 6+ features, React components, JSX accessibility, and modern JavaScript patterns, requiring several peer dependencies including eslint-plugin-import, eslint-plugin-react, eslint-plugin-react-hooks, and eslint-plugin-jsx-a11y.
npm install --save-dev eslint-config-airbnbESLint Config Airbnb is used in ESLint configuration files rather than imported directly in JavaScript code:
// .eslintrc.js
module.exports = {
extends: ['airbnb']
};JSON format:
{
"extends": ["airbnb"]
}After installing the package and its peer dependencies, extend your ESLint configuration:
// .eslintrc.js
module.exports = {
extends: ['airbnb'],
// Additional customizations
rules: {
// Override specific rules if needed
}
};For React projects with hooks:
// .eslintrc.js
module.exports = {
extends: ['airbnb', 'airbnb/hooks']
};ESLint Config Airbnb is built around several key components:
Default ESLint configuration with React support, ECMAScript 6+ rules, and accessibility guidelines. Suitable for most React applications.
// Usage in .eslintrc.js
module.exports = {
extends: ['airbnb']
};
// Configuration object structure
interface ESLintConfig {
extends: string[];
rules: Record<string, any>;
}Additional ESLint rules specifically for React Hooks, enforcing Rules of Hooks and exhaustive dependencies.
// Usage in .eslintrc.js
module.exports = {
extends: ['airbnb', 'airbnb/hooks']
};Special configuration that errors only on whitespace/formatting rules while converting other rule violations to warnings.
// Usage in .eslintrc.js
module.exports = {
extends: ['airbnb/whitespace']
};Base configuration without React-specific rules (deprecated - use eslint-config-airbnb-base instead).
// Usage in .eslintrc.js (deprecated)
module.exports = {
extends: ['airbnb/base']
};Legacy ES5 configuration without modern ES6+ features (deprecated - use eslint-config-airbnb-base/legacy instead).
// Usage in .eslintrc.js (deprecated)
module.exports = {
extends: ['airbnb/legacy']
};Direct access to specific rule modules for custom configuration assembly.
// Usage in .eslintrc.js
module.exports = {
extends: [
'airbnb-base',
'eslint-config-airbnb/rules/react',
'eslint-config-airbnb/rules/react-a11y'
]
};interface ESLintConfig {
extends?: string[];
rules?: Record<string, ESLintRuleConfig>;
plugins?: string[];
parserOptions?: {
ecmaFeatures?: {
jsx?: boolean;
};
};
settings?: Record<string, any>;
}
type ESLintRuleConfig =
| 'off' | 'warn' | 'error'
| 0 | 1 | 2
| ['off' | 'warn' | 'error' | 0 | 1 | 2, ...any[]];