Airbnb's comprehensive ESLint configuration as an extensible shared config for JavaScript and React projects
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
ESLint 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[]];Install with Tessl CLI
npx tessl i tessl/npm-eslint-config-airbnb