Specialized ESLint configurations for popular JavaScript/TypeScript frameworks and libraries. These configurations provide framework-specific rules, patterns, and best practices.
Comprehensive React configuration with hooks rules, JSX best practices, and modern React patterns.
/**
* React framework ESLint configuration
* Includes plugins: @stylistic, react, react-hooks
* Applies to: React components and JSX files
*/
interface ReactConfiguration {
recommended: ESLintConfig;
}
declare const react: ReactConfiguration;Usage Examples:
import * as react from 'eslint-config-canonical/react';
import tseslint from 'typescript-eslint';
export default tseslint.config({
files: ['**/*.{jsx,tsx}'],
...react.recommended,
});Key Features:
Configuration optimized for Next.js applications with SSR/SSG considerations and Next.js specific patterns.
/**
* Next.js framework ESLint configuration
* Includes plugin: @next/eslint-plugin-next
* Provides Next.js specific rules and optimizations
*/
interface NextConfiguration {
recommended: ESLintConfig;
}
declare const next: NextConfiguration;Usage Examples:
import * as next from 'eslint-config-canonical/next';
import * as react from 'eslint-config-canonical/react';
import tseslint from 'typescript-eslint';
export default tseslint.config(
{
files: ['**/*.{jsx,tsx}'],
...react.recommended,
},
{
files: ['pages/**/*.{js,ts,jsx,tsx}', 'app/**/*.{js,ts,jsx,tsx}'],
...next.recommended,
}
);Key Features:
Configuration for GraphQL schema and query files with validation and best practices.
/**
* GraphQL ESLint configuration
* Includes plugin: @graphql-eslint/eslint-plugin
* Applies to: **/*.{graphql,gql} files
*/
interface GraphQLConfiguration {
recommended: ESLintConfig;
}
declare const graphql: GraphQLConfiguration;Usage Examples:
import * as graphql from 'eslint-config-canonical/graphql';
import tseslint from 'typescript-eslint';
export default tseslint.config({
files: ['**/*.{graphql,gql}'],
...graphql.recommended,
});Key Features:
React accessibility configuration ensuring WCAG compliance and accessible component patterns.
/**
* JSX accessibility ESLint configuration
* Includes plugin: jsx-a11y
* Provides comprehensive accessibility rules for React components
*/
interface JSXAccessibilityConfiguration {
recommended: ESLintConfig;
}
declare const jsxA11y: JSXAccessibilityConfiguration;Usage Examples:
import * as react from 'eslint-config-canonical/react';
import * as jsxA11y from 'eslint-config-canonical/jsx-a11y';
import tseslint from 'typescript-eslint';
export default tseslint.config(
{
files: ['**/*.{jsx,tsx}'],
...react.recommended,
},
{
files: ['**/*.{jsx,tsx}'],
...jsxA11y.recommended,
}
);Key Features:
import * as canonical from 'eslint-config-canonical/canonical';
import * as typescript from 'eslint-config-canonical/typescript';
import * as react from 'eslint-config-canonical/react';
import * as jsxA11y from 'eslint-config-canonical/jsx-a11y';
import tseslint from 'typescript-eslint';
export default tseslint.config(
// Base configuration
canonical.recommended,
// TypeScript support
{
files: ['**/*.{ts,tsx}'],
...typescript.recommended,
},
// React components
{
files: ['**/*.{jsx,tsx}'],
...react.recommended,
},
// Accessibility for components
{
files: ['src/components/**/*.{jsx,tsx}'],
...jsxA11y.recommended,
}
);import * as canonical from 'eslint-config-canonical/canonical';
import * as typescript from 'eslint-config-canonical/typescript';
import * as react from 'eslint-config-canonical/react';
import * as next from 'eslint-config-canonical/next';
import * as graphql from 'eslint-config-canonical/graphql';
import tseslint from 'typescript-eslint';
export default tseslint.config(
canonical.recommended,
// TypeScript files
{
files: ['**/*.{ts,tsx}'],
...typescript.recommended,
},
// React components
{
files: ['**/*.{jsx,tsx}'],
...react.recommended,
},
// Next.js pages and app directory
{
files: ['pages/**/*.{js,ts,jsx,tsx}', 'app/**/*.{js,ts,jsx,tsx}'],
...next.recommended,
},
// GraphQL files
{
files: ['**/*.{graphql,gql}'],
...graphql.recommended,
}
);The React configuration automatically enforces proper hook dependencies:
// ✅ Correct - all dependencies included
useEffect(() => {
fetchData(id, name);
}, [id, name]);
// ❌ Incorrect - missing dependency
useEffect(() => {
fetchData(id, name);
}, [id]); // Missing 'name' dependencyThe Next.js configuration enforces proper image usage:
// ✅ Correct - using Next.js Image component
import Image from 'next/image';
<Image src="/photo.jpg" alt="Photo" width={500} height={300} />
// ❌ Incorrect - using regular img tag
<img src="/photo.jpg" alt="Photo" />The GraphQL configuration enforces consistent naming:
# ✅ Correct - descriptive operation name
query GetUserProfile($userId: ID!) {
user(id: $userId) {
name
email
}
}
# ❌ Incorrect - anonymous operation
query ($userId: ID!) {
user(id: $userId) {
name
email
}
}