### Automated Setup with create-airbnb-x-config Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/installation.md Run this command in your project directory to automatically configure ESLint with the Airbnb Extended setup. The CLI tool guides you through the process. ```sh $ npx create-airbnb-x-config ``` ```sh $ yarn dlx create-airbnb-x-config ``` ```sh $ pnpx create-airbnb-x-config ``` ```sh $ bunx create-airbnb-x-config ``` -------------------------------- ### Setup ESLint with TypeScript and React using npm Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/cli/options.md Use this command to set up ESLint with TypeScript and React rules, installing dependencies via npm. This bypasses interactive prompts for a quick setup. ```bash $ npx create-airbnb-x-config --lang typescript --runtime react --pm npm ``` -------------------------------- ### Setup ESLint with TypeScript and React using bun Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/cli/options.md Use this command to set up ESLint with TypeScript and React rules, installing dependencies via bun. This bypasses interactive prompts for a quick setup. ```bash $ bunx create-airbnb-x-config --lang typescript --runtime react --pm bun ``` -------------------------------- ### Non-Interactive CLI Installation Examples Source: https://context7.com/eslint-config/airbnb-extended/llms.txt Skip the interactive wizard by passing options as flags. Ideal for CI, automation scripts, and monorepos. Use --skip-install to only print commands. ```sh # TypeScript + React + strict rules (all three categories) + pnpm, auto-generate eslint.config.mjs pnpx create-airbnb-x-config \ --config extended \ --lang typescript \ --runtime react \ --strict import \ --strict react \ --strict typescript \ --pm pnpm \ --create-eslint-file # TypeScript + Next.js + Prettier, skip install (print commands only) npx create-airbnb-x-config \ --config extended \ --lang typescript \ --runtime next \ --formatter prettier \ --pm npm \ --skip-install # Legacy drop-in for airbnb-typescript (React + Hooks), using yarn yarn dlx create-airbnb-x-config \ --config legacy \ --lang typescript \ --legacy react-hooks \ --pm yarn \ --create-eslint-file ``` -------------------------------- ### Setup ESLint with TypeScript and React using pnpm Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/cli/options.md Use this command to set up ESLint with TypeScript and React rules, installing dependencies via pnpm. This bypasses interactive prompts for a quick setup. ```bash $ pnpx create-airbnb-x-config --lang typescript --runtime react --pm pnpm ``` -------------------------------- ### Install and Run CLI with Bun Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/cli/guide.md Use this command to run the create-airbnb-x-config tool directly within your project using Bun. ```sh $ bunx create-airbnb-x-config ``` -------------------------------- ### Install ESLint Airbnb Extended via CLI Source: https://context7.com/eslint-config/airbnb-extended/llms.txt Use the create-airbnb-x-config CLI tool for an interactive setup wizard to generate a complete eslint.config.mjs file tailored to your project. ```sh # npm npx create-airbnb-x-config # yarn yarn dlx create-airbnb-x-config # pnpm pnpx create-airbnb-x-config # bun bunx create-airbnb-x-config ``` -------------------------------- ### Monorepo Setup with Flat Config Source: https://context7.com/eslint-config/airbnb-extended/llms.txt Example ESLint Flat Config setup for a monorepo using eslint-config-airbnb-extended, including shared configurations and language-specific overrides. ```typescript // Root eslint.config.mjs — shared config for the entire monorepo import path from 'node:path'; import { includeIgnoreFile } from '@eslint/compat'; import js from '@eslint/js'; import { defineConfig } from 'eslint/config'; import { configs, plugins, rules } from 'eslint-config-airbnb-extended'; export default defineConfig([ includeIgnoreFile(path.resolve('.', '.gitignore')), { name: 'js/config', ...js.configs.recommended }, plugins.stylistic, plugins.importX, ...configs.base.recommended, plugins.typescriptEslint, ...configs.base.typescript, rules.base.importsStrict, // Frontend apps: React rules { files: ['apps/web/**/*.{jsx,tsx}', 'apps/marketing/**/*.{jsx,tsx}'], ...Object.assign( {}, ...[plugins.react, plugins.reactHooks, plugins.reactA11y] ), }, // Backend packages: Node rules { files: ['packages/api/**/*.ts', 'packages/worker/**/*.ts'], ...Object.assign({}, ...[plugins.node, ...configs.node.recommended]), }, ]); ``` -------------------------------- ### Setup ESLint with TypeScript and React using yarn Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/cli/options.md Use this command to set up ESLint with TypeScript and React rules, installing dependencies via yarn. This bypasses interactive prompts for a quick setup. ```bash $ yarn dlx create-airbnb-x-config --lang typescript --runtime react --pm yarn ``` -------------------------------- ### Install and Run CLI with npm Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/cli/guide.md Use this command to run the create-airbnb-x-config tool directly within your project using npm. ```sh $ npx create-airbnb-x-config ``` -------------------------------- ### Manual Installation of ESLint Airbnb Extended Source: https://context7.com/eslint-config/airbnb-extended/llms.txt Install the required packages manually. All ESLint plugins are bundled internally, so no separate plugin installations are needed. ```sh # npm npm install -D eslint eslint-config-airbnb-extended # pnpm pnpm add -D eslint eslint-config-airbnb-extended # yarn yarn add -D eslint eslint-config-airbnb-extended # bun bun add -D eslint eslint-config-airbnb-extended ``` -------------------------------- ### Install and Run CLI with pnpm Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/cli/guide.md Use this command to run the create-airbnb-x-config tool directly within your project using pnpm. ```sh $ pnpx create-airbnb-x-config ``` -------------------------------- ### Install Dependencies with bun Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/cli/guide.md Use this command to install the necessary ESLint dependencies with bun. ```sh $ bun add -D eslint @eslint/compat @eslint/js eslint-config-airbnb-extended ``` -------------------------------- ### Install and Run CLI with Yarn Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/cli/guide.md Use this command to run the create-airbnb-x-config tool directly within your project using Yarn. ```sh $ yarn dlx create-airbnb-x-config ``` -------------------------------- ### Install Dependencies with npm Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/cli/guide.md Use this command to install the necessary ESLint dependencies with npm. ```sh $ npm install -D eslint @eslint/compat @eslint/js eslint-config-airbnb-extended ``` -------------------------------- ### Install Dependencies with yarn Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/cli/guide.md Use this command to install the necessary ESLint dependencies with yarn. ```sh $ yarn add -D eslint @eslint/compat @eslint/js eslint-config-airbnb-extended ``` -------------------------------- ### Install Dependencies with pnpm Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/cli/guide.md Use this command to install the necessary ESLint dependencies with pnpm. ```sh $ pnpm install -D eslint @eslint/compat @eslint/js eslint-config-airbnb-extended ``` -------------------------------- ### Install Dependencies with pnpm Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/contribute/guide.md Install project dependencies using pnpm. Ensure you are using the Node.js version specified in .nvmrc and the pnpm version specified in package.json. ```shell $ pnpm install ``` -------------------------------- ### Import and Use Node.js ESLint Config Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/extended-config/configs.md Import and spread the Node.js recommended ESLint configuration. This is the recommended setup for Node.js projects. ```typescript import { configs } from 'eslint-config-airbnb-extended'; export default [ // Node recommended config ...configs.node.recommended, ]; ``` -------------------------------- ### Import and Use Base ESLint Configs Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/extended-config/configs.md Import and spread the Base recommended and TypeScript ESLint configurations. This setup is ideal for projects requiring a solid foundation with TypeScript support. ```typescript import { configs } from 'eslint-config-airbnb-extended'; export default [ // Base recommended config ...configs.base.recommended, // Base TypeScript config ...configs.base.typescript, ]; ``` -------------------------------- ### Configure Parser, Resolver, and Settings Layers Source: https://context7.com/eslint-config/airbnb-extended/llms.txt Use `extensions` to combine parser setup, import resolver configuration, and settings into reusable layers. Ideal for building fully custom configs without using `configs.*` presets. ```typescript import { extensions } from 'eslint-config-airbnb-extended'; export default [ // Base JS: sets up Node + TS resolvers, import settings, // disables deprecated ESLint stylistic rules ...extensions.base.recommended, // Base TS: adds TypeScript parser, TS resolver, TS-specific settings, // disables rules that typescript-eslint supersedes ...extensions.base.typescript, // React: parser + resolver + import settings tuned for JSX, // enables required ESLint + stylistic React rules ...extensions.react.recommended, ...extensions.react.typescript, // adjusts React rules for stricter TS usage // Next.js: disables import rules that conflict with Next.js conventions, // removes React rules unnecessary in Next.js projects ...extensions.next.recommended, // Node: detects CJS vs ESM and adjusts module rules accordingly ...extensions.node.recommended, ]; ``` -------------------------------- ### Import Base Lint Staged Configuration Source: https://github.com/eslint-config/airbnb-extended/blob/master/configs/lint-staged-config/README.md Use this snippet to import the base lint-staged configuration. Ensure the '@airbnb-extended/lint-staged-config/base' module is correctly installed. ```javascript import config from '@airbnb-extended/lint-staged-config/base'; export default config; ``` -------------------------------- ### Legacy React Config (Replaces airbnb-typescript) Source: https://context7.com/eslint-config/airbnb-extended/llms.txt Use this legacy configuration to replace `eslint-config-airbnb-typescript` for React projects. It provides a drop-in replacement with minimal diff from the original Airbnb setup. ```javascript // eslint.config.mjs — replaces eslint-config-airbnb-typescript (React variant) import { configs } from 'eslint-config-airbnb-extended/legacy'; // Equivalent to eslint-config-airbnb (with hooks) export default [...configs.react.recommended, ...configs.react.hooks]; ``` -------------------------------- ### getImportSettings Helper Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/extended-config/helpers.md The `getImportSettings` helper generates ESLint `settings` for `eslint-plugin-import-x`, configuring resolvers and extensions based on project setup. ```APIDOC ## getImportSettings(params) Generates ESLint `settings` for `eslint-plugin-import-x` with proper resolvers and extensions. ```ts type GetImportSettingsParams = { javascript: boolean; typescript: boolean; jsx: boolean; }; ``` - Configures **Node** and **TypeScript** import resolvers - Automatically selects extensions based on: - JavaScript vs TypeScript - React / JSX usage - Adds TypeScript-specific parsing and type resolution when enabled ### Example ```ts import { getImportSettings } from '@/helpers'; export default [ { settings: getImportSettings({ javascript: false, typescript: true, jsx: true, }), }, ]; ``` ``` -------------------------------- ### Import Root Lint Staged Configuration Source: https://github.com/eslint-config/airbnb-extended/blob/master/configs/lint-staged-config/README.md Use this snippet to import the root lint-staged configuration. This is typically used at the root of the monorepo. Ensure the '@airbnb-extended/lint-staged-config/root' module is correctly installed. ```javascript import config from '@airbnb-extended/lint-staged-config/root'; export default config; ``` -------------------------------- ### Get Dev Dependency Glob Patterns Source: https://context7.com/eslint-config/airbnb-extended/llms.txt Returns glob patterns for devDependencies, useful for import/no-extraneous-dependencies rules. Supports TypeScript and JavaScript. ```typescript import { helpers } from 'eslint-config-airbnb-extended'; const { getDevDepsList } = helpers; // Returns patterns like ['**/*.test.ts', '**/*.spec.ts', '**/jest.config.ts', // '**/vite.config.ts', '**/eslint.config.*', ...] const tsDevPatterns = getDevDepsList('typescript'); const jsDevPatterns = getDevDepsList('javascript'); export default [ { rules: { 'import-x/no-extraneous-dependencies': [ 'error', { devDependencies: getDevDepsList('typescript'), optionalDependencies: false, }, ], }, }, ]; ``` -------------------------------- ### Get Development-Only File Globs for Import Rules Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/extended-config/helpers.md Utilize `getDevDepsList` to generate glob patterns for files that should be treated as development dependencies, such as test or config files. This helps configure rules like `import-x/no-extraneous-dependencies`. ```typescript import { helpers } from 'eslint-config-airbnb-extended'; const { getDevDepsList } = helpers; export default [ { rules: { 'import-x/no-extraneous-dependencies': [ 'error', { devDependencies: getDevDepsList('typescript'), }, ], }, }, ]; ``` -------------------------------- ### Node.js Backend + TypeScript Configuration Source: https://context7.com/eslint-config/airbnb-extended/llms.txt Configure ESLint for a Node.js backend project with TypeScript support. This setup includes base JavaScript rules, import sorting, stylistic rules, and Node.js specific best practices. ```javascript // eslint.config.mjs — Node.js backend + TypeScript import path from 'node:path'; import { includeIgnoreFile } from '@eslint/compat'; import js from '@eslint/js'; import { defineConfig } from 'eslint/config'; import { configs, plugins } from 'eslint-config-airbnb-extended'; export default defineConfig([ includeIgnoreFile(path.resolve('.', '.gitignore')), { name: 'js/config', ...js.configs.recommended }, plugins.stylistic, plugins.importX, ...configs.base.recommended, plugins.node, ...configs.node.recommended, // Node.js best practices plugins.typescriptEslint, ...configs.base.typescript, ]); ``` -------------------------------- ### Extended Config for TypeScript + React Project Source: https://context7.com/eslint-config/airbnb-extended/llms.txt Use this configuration for a comprehensive ESLint setup in a TypeScript and React project. It includes base JavaScript rules, import sorting, stylistic rules, and specific configurations for React and TypeScript. ```javascript // eslint.config.mjs — Extended config for a TypeScript + React project import path from 'node:path'; import { includeIgnoreFile } from '@eslint/compat'; import js from '@eslint/js'; import { defineConfig } from 'eslint/config'; import { configs, plugins } from 'eslint-config-airbnb-extended'; const gitignorePath = path.resolve('.', '.gitignore'); export default defineConfig([ includeIgnoreFile(gitignorePath), { name: 'js/config', ...js.configs.recommended }, // --- Extended base (JS rules + import-x + stylistic) --- plugins.stylistic, plugins.importX, ...configs.base.recommended, // JS rules without strict imports ...configs.base.typescript, // TypeScript rules (adds typescript-eslint) // --- React --- plugins.react, plugins.reactHooks, plugins.reactA11y, ...configs.react.recommended, // React rules ...configs.react.typescript, // React TypeScript adjustments // Project-specific overrides { files: ['src/**/*.{ts,tsx}'], rules: { 'no-console': 'warn', }, }, ]); ``` -------------------------------- ### Import React Recommended Config Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/legacy-config.md Use this to import the recommended React configuration, equivalent to `eslint-config-airbnb`. ```javascript import { configs } from 'eslint-config-airbnb-extended/legacy'; // Equivalent to airbnb export default [...configs.react.recommended]; ``` -------------------------------- ### Import Recommended Base Config Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/legacy-config.md Use this to import the recommended base configuration, equivalent to `eslint-config-airbnb-base`. ```javascript import { configs } from 'eslint-config-airbnb-extended/legacy'; // Equivalent to airbnb-base export default [...configs.base.recommended]; ``` -------------------------------- ### Import React Legacy Config Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/legacy-config.md Use this to import the legacy React configuration, equivalent to `eslint-config-airbnb/legacy`. ```javascript import { configs } from 'eslint-config-airbnb-extended/legacy'; // Equivalent to airbnb/legacy export default [...configs.react.legacy]; ``` -------------------------------- ### Import React Base Config Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/legacy-config.md Use this to import the React base configuration, equivalent to `eslint-config-airbnb/base`. ```javascript import { configs } from 'eslint-config-airbnb-extended/legacy'; // Equivalent to airbnb/base export default [...configs.react.base]; ``` -------------------------------- ### Import Base Legacy Config Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/legacy-config.md Use this to import the legacy base configuration, equivalent to `eslint-config-airbnb-base/legacy`. ```javascript import { configs } from 'eslint-config-airbnb-extended/legacy'; // Equivalent to airbnb-base/legacy export default [...configs.base.legacy]; ``` -------------------------------- ### Run All Scripts Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/contribute/guide.md Execute all project scripts, including linting, before pushing your changes to ensure everything passes. ```shell $ pnpm script:lint ``` -------------------------------- ### Import React Hooks Config Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/legacy-config.md Use this to import the React Hooks configuration, equivalent to `eslint-config-airbnb/hooks`. ```javascript import { configs } from 'eslint-config-airbnb-extended/legacy'; // Equivalent to airbnb/hooks export default [...configs.react.hooks]; ``` -------------------------------- ### Import TypeScript Base Config Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/legacy-config.md Use this to import the TypeScript base configuration, equivalent to `eslint-config-airbnb-typescript/base`. ```javascript import { configs } from 'eslint-config-airbnb-extended/legacy'; // Equivalent to airbnb-typescript/base export default [...configs.base.typescript]; ``` -------------------------------- ### Migrate from Legacy Airbnb Packages Source: https://context7.com/eslint-config/airbnb-extended/llms.txt Steps to migrate from legacy eslint-config-airbnb packages to eslint-config-airbnb-extended using npm. ```sh # Step 1 — Remove old Airbnb packages npm uninstall eslint-config-airbnb-base eslint-config-airbnb eslint-config-airbnb-typescript # Step 2 — Remove individually installed plugins (now bundled internally in v3) npm uninstall @next/eslint-plugin-next @stylistic/eslint-plugin \ eslint-import-resolver-typescript eslint-plugin-import-x \ eslint-plugin-jsx-a11y eslint-plugin-react eslint-plugin-react-hooks \ typescript-eslint eslint-plugin-n eslint-plugin-import # Step 3 — Install the new package (only two deps needed) npm install -D eslint eslint-config-airbnb-extended # Step 4 — Replace .eslintrc.* with eslint.config.mjs (Flat Config) # Use the CLI to scaffold automatically: npx create-airbnb-x-config --config extended --lang typescript --runtime react \ --pm npm --create-eslint-file # Step 5 — Update any import rule references in your overrides # Old: "import/no-unresolved": "off" # New: "import-x/no-unresolved": "off" # Verify everything works npx eslint . ``` -------------------------------- ### Configure TypeScript Base and Import Rules Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/extended-config/rules.md Import and apply base and import-related TypeScript rules from the Airbnb extended ESLint configuration. ```typescript import { rules } from 'eslint-config-airbnb-extended'; export default [ // Base rules.typescript.base, // Imports rules.typescript.imports, ]; ``` -------------------------------- ### Import and Use React ESLint Configs Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/extended-config/configs.md Import and spread the React recommended and TypeScript ESLint configurations. Use this for React projects, especially those utilizing TypeScript. ```typescript import { configs } from 'eslint-config-airbnb-extended'; export default [ // React recommended config ...configs.react.recommended, // React TypeScript config ...configs.react.typescript, ]; ``` -------------------------------- ### Legacy Base Config (Replaces airbnb-base) Source: https://context7.com/eslint-config/airbnb-extended/llms.txt This legacy configuration serves as a direct replacement for `eslint-config-airbnb-base`. It includes the recommended base JavaScript rules without specific framework or TypeScript extensions. ```javascript // eslint.config.mjs — replaces eslint-config-airbnb-base (JS only) import { configs } from 'eslint-config-airbnb-extended/legacy'; export default [ ...configs.base.recommended, // equivalent to airbnb-base ]; ``` -------------------------------- ### Import TypeScript React Config Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/legacy-config.md Use this to import the TypeScript React configuration, equivalent to `eslint-config-airbnb-typescript`. ```javascript import { configs } from 'eslint-config-airbnb-extended/legacy'; // Equivalent to airbnb-typescript export default [...configs.react.typescript]; ``` -------------------------------- ### ESLint Configuration Utilities Source: https://github.com/eslint-config/airbnb-extended/blob/master/configs/eslint-config/README.md Import utility functions for creating ESLint configurations, such as defineConfig and globalIgnores. ```javascript // eslint.config.js import { defineConfig, globalIgnores } from '@airbnb-extended/eslint-config/utils'; ``` -------------------------------- ### Base ESLint Configuration Source: https://github.com/eslint-config/airbnb-extended/blob/master/configs/eslint-config/README.md Import the base ESLint configuration for general use. ```javascript // eslint.config.js import config from '@airbnb-extended/eslint-config/base'; export default config; ``` -------------------------------- ### Create a New Branch Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/contribute/guide.md Before making changes, create a new branch for your work. Use a descriptive name for the branch. ```shell $ git checkout -b fix/your-change ``` -------------------------------- ### Clone Repository (SSH/HTTPS) Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/contribute/guide.md Clone the repository using either SSH or HTTPS. Navigate into the cloned directory. ```shell $ git clone git@github.com:eslint-config/airbnb-extended.git $ cd eslint-config-airbnb-extended ``` ```shell $ git clone https://github.com/eslint-config/airbnb-extended.git $ cd eslint-config-airbnb-extended ``` -------------------------------- ### Import and Use ESLint Extensions Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/extended-config/extensions.md Import extensions from 'eslint-config-airbnb-extended' and spread them into your ESLint configuration array to apply recommended settings for base and Next.js projects. ```typescript import { extensions } from 'eslint-config-airbnb-extended'; export default [ // Recommended base extension ...extensions.base.recommended, // Recommended Next.js extension ...extensions.next.recommended, ]; ``` -------------------------------- ### Import and Use Next.js ESLint Configs Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/extended-config/configs.md Import and spread the Next.js recommended and TypeScript ESLint configurations. This is suitable for Next.js projects, leveraging React configurations and adding Next.js specific rules. ```typescript import { configs } from 'eslint-config-airbnb-extended'; export default [ // Next.js recommended config ...configs.next.recommended, // Next.js TypeScript config ...configs.next.typescript, ]; ``` -------------------------------- ### Import Base Prettier Configuration Source: https://github.com/eslint-config/airbnb-extended/blob/master/configs/prettier-config/README.md Import the base Prettier configuration from the @airbnb-extended/prettier-config package for use in your project's prettier.config.js file. ```javascript // prettier.config.js import config from '@airbnb-extended/prettier-config/base'; export default config; ``` -------------------------------- ### Import Strict Rules from Package Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/customization/strict-rules.md Import the available strict rules from the 'eslint-config-airbnb-extended' package. This makes the rule sets accessible for configuration. ```ts import { rules } from 'eslint-config-airbnb-extended'; ``` -------------------------------- ### Root ESLint Configuration Source: https://github.com/eslint-config/airbnb-extended/blob/master/configs/eslint-config/README.md Import the root ESLint configuration, suitable for the top-level of the monorepo. ```javascript // eslint.config.js import config from '@airbnb-extended/eslint-config/root'; export default config; ``` -------------------------------- ### Legacy TypeScript Base Config (Replaces airbnb-typescript/base) Source: https://context7.com/eslint-config/airbnb-extended/llms.txt This legacy configuration is a replacement for `eslint-config-airbnb-typescript/base`. It provides the base TypeScript ESLint rules without React-specific configurations. ```javascript // eslint.config.mjs — replaces eslint-config-airbnb-typescript (base, no React) import { configs } from 'eslint-config-airbnb-extended/legacy'; export default [ ...configs.base.typescript, // equivalent to airbnb-typescript/base ]; ``` -------------------------------- ### Configure Import Resolver and Extension Settings Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/extended-config/helpers.md Use `getImportSettings` to generate ESLint settings for `eslint-plugin-import-x`, automatically configuring Node and TypeScript resolvers and extensions based on project needs (JavaScript, TypeScript, JSX). ```typescript import { getImportSettings } from '@/helpers'; export default [ { settings: getImportSettings({ javascript: false, typescript: true, jsx: true, }), }, ]; ``` -------------------------------- ### Add Linting Scripts to package.json Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/cli/guide.md Add these scripts to your package.json for convenient linting and fixing. ```json { "scripts": { "lint": "eslint .", "lint:fix": "eslint . --fix" } } ``` -------------------------------- ### getDevDepsList Helper Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/extended-config/helpers.md The `getDevDepsList` helper generates a list of glob patterns for files considered development dependencies, useful for ESLint import rules. ```APIDOC ## getDevDepsList(language) Returns a list of glob patterns that should be treated as **development-only files** for ESLint import rules. ```ts type GetDevDepsList = (language: 'javascript' | 'typescript') => string[]; ``` - Generates file patterns for: - Test files - Mocks - Config files (Jest, Vite, Webpack, ESLint, etc.) - Automatically adapts extensions based on the selected language - Helps configure rules like `import-x/no-extraneous-dependencies` ### Example ```ts import { helpers } from 'eslint-config-airbnb-extended'; const { getDevDepsList } = helpers; export default [ { rules: { 'import-x/no-extraneous-dependencies': [ 'error', { devDependencies: getDevDepsList('typescript'), }, ], }, }, ]; ``` ``` -------------------------------- ### Uninstalling old packages with bun Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/migration/upgrade-to-v3.md Use this command to remove packages that are now included by default in v3. Ensure you are using bun. ```sh $ bun remove @next/eslint-plugin-next @stylistic/eslint-plugin eslint-import-resolver-typescript eslint-plugin-import-x eslint-plugin-jsx-a11y eslint-plugin-react eslint-plugin-react-hooks typescript-eslint eslint-plugin-n eslint-plugin-import ``` -------------------------------- ### Import Next.js Rules Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/extended-config/rules.md Import and apply base Next.js linting rules. These rules enforce best practices recommended for Next.js applications. ```javascript import { rules } from 'eslint-config-airbnb-extended'; export default [ // Base rules.next.base, ]; ``` -------------------------------- ### Include ESLint Plugins Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/extended-config/plugins.md Import and include plugins like Stylistic and TypeScript ESLint in your ESLint configuration. ```typescript import { plugins } from 'eslint-config-airbnb-extended'; export default [ // Stylistic plugin plugins.stylistic, // TypeScript ESLint plugin plugins.typescriptEslint, ]; ``` -------------------------------- ### Next.js + TypeScript + Prettier Configuration Source: https://context7.com/eslint-config/airbnb-extended/llms.txt This configuration is suitable for Next.js projects using TypeScript and integrating Prettier for code formatting. It combines Next.js specific rules with TypeScript adjustments and Prettier integration. ```javascript // eslint.config.mjs — Next.js + TypeScript + Prettier import path from 'node:path'; import { includeIgnoreFile } from '@eslint/compat'; import js from '@eslint/js'; import { defineConfig } from 'eslint/config'; import { configs, plugins } from 'eslint-config-airbnb-extended'; import { rules as prettierRules } from 'eslint-config-prettier'; import prettierPlugin from 'eslint-plugin-prettier'; const gitignorePath = path.resolve('.', '.gitignore'); export default defineConfig([ includeIgnoreFile(gitignorePath), { name: 'js/config', ...js.configs.recommended }, plugins.stylistic, plugins.importX, ...configs.base.recommended, plugins.react, plugins.reactHooks, plugins.reactA11y, plugins.next, ...configs.next.recommended, // React recommended + Next.js rules plugins.typescriptEslint, ...configs.base.typescript, ...configs.next.typescript, // Next.js TypeScript adjustments { name: 'prettier/plugin', plugins: { prettier: prettierPlugin } }, { name: 'prettier/config', rules: { ...prettierRules, 'prettier/prettier': 'error' } }, ]); ``` -------------------------------- ### Uninstalling old packages with pnpm Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/migration/upgrade-to-v3.md Use this command to remove packages that are now included by default in v3. Ensure you are using pnpm. ```sh $ pnpm remove @next/eslint-plugin-next @stylistic/eslint-plugin eslint-import-resolver-typescript eslint-plugin-import-x eslint-plugin-jsx-a11y eslint-plugin-react eslint-plugin-react-hooks typescript-eslint eslint-plugin-n eslint-plugin-import ``` -------------------------------- ### Linting and Formatting Checks Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/contribute/guide.md Run linting and formatting checks to ensure code quality and consistency. Use the 'fix' commands to automatically resolve formatting issues. ```shell $ pnpm lint $ pnpm format ``` ```shell $ pnpm lint:fix $ pnpm format:fix ``` -------------------------------- ### Internal ESLint Configuration Source: https://github.com/eslint-config/airbnb-extended/blob/master/configs/eslint-config/README.md Import the internal ESLint configuration, typically used for packages within the monorepo. ```javascript // eslint.config.js import config from '@airbnb-extended/eslint-config/internal'; export default config; ``` -------------------------------- ### Import Base Rules Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/extended-config/rules.md Import and apply base rules for best practices and general imports. These rules enhance code quality and maintainability. ```javascript import { rules } from 'eslint-config-airbnb-extended'; export default [ // Best Practices rules.base.bestPractices, // Imports rules.base.imports, ]; ``` -------------------------------- ### Import Node.js Rules Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/extended-config/rules.md Import and apply Node.js specific rules, particularly for promise-based operations. Ensures proper usage of Node.js features. ```javascript import { rules } from 'eslint-config-airbnb-extended'; export default [ // Promises rules.node.promises, ]; ``` -------------------------------- ### Uninstalling old packages with npm Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/migration/upgrade-to-v3.md Use this command to remove packages that are now included by default in v3. Ensure you are using npm. ```sh $ npm uninstall @next/eslint-plugin-next @stylistic/eslint-plugin eslint-import-resolver-typescript eslint-plugin-import-x eslint-plugin-jsx-a11y eslint-plugin-react eslint-plugin-react-hooks typescript-eslint eslint-plugin-n eslint-plugin-import ``` -------------------------------- ### Define JavaScript and TypeScript File Extensions Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/extended-config/helpers.md Use the `jsFiles` and `tsFiles` helpers to include both JavaScript and TypeScript files in ESLint configurations. ```typescript import { helpers } from 'eslint-config-airbnb-extended'; const { jsFiles, tsFiles } = helpers; export default [ { files: [...jsFiles, ...tsFiles], }, ]; ``` -------------------------------- ### Utilize File Extension Lists and Glob Patterns Source: https://context7.com/eslint-config/airbnb-extended/llms.txt Access centralized JS/TS file extension arrays and glob patterns via `helpers.extensions`. These are used to target correct file types for rule application. ```typescript import { helpers } from 'eslint-config-airbnb-extended'; const { jsExtensions, tsExtensions, jsFiles, tsFiles, reactFiles } = helpers; // jsFiles → ['**/*.js', '**/*.mjs', '**/*.cjs', '**/*.jsx'] // tsFiles → ['**/*.ts', '**/*.mts', '**/*.cts', '**/*.tsx'] export default [ { // Apply a rule only to JS + TS source files files: [...jsFiles, ...tsFiles], rules: { 'no-console': 'warn', }, }, { // Apply React-specific overrides only to JSX/TSX files files: reactFiles, rules: { 'react/jsx-no-useless-fragment': 'error', }, }, ]; ``` -------------------------------- ### Generate Import Resolver Settings Source: https://context7.com/eslint-config/airbnb-extended/llms.txt Generates ESLint settings for eslint-plugin-import-x, configuring Node and TypeScript resolvers. Adapts to project language and JSX usage. ```typescript import { helpers } from 'eslint-config-airbnb-extended'; const { getImportSettings } = helpers; export default [ // TypeScript + JSX project (React/Next.js) { settings: getImportSettings({ javascript: false, typescript: true, jsx: true, }), }, // JavaScript-only project (no JSX) { settings: getImportSettings({ javascript: true, typescript: false, jsx: false, }), }, ]; ``` -------------------------------- ### Extensions Helper Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/extended-config/helpers.md The `extensions` helper provides centralized definitions for JavaScript, TypeScript, and React file extensions and glob patterns used across ESLint configurations. ```APIDOC ## extensions A centralized collection of file extensions and glob patterns used across the configuration. - Defines **JavaScript** and **TypeScript** file extensions - Provides **React-aware** extensions (`.jsx`, `.tsx`) - Exposes glob patterns for ESLint targeting - Ensures consistent extension handling across rules, resolvers, and configs ### Example ```ts import { helpers } from 'eslint-config-airbnb-extended'; const { jsFiles, tsFiles } = helpers; export default [ { files: [...jsFiles, ...tsFiles], }, ]; ``` ``` -------------------------------- ### Uninstalling old packages with yarn Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/migration/upgrade-to-v3.md Use this command to remove packages that are now included by default in v3. Ensure you are using yarn. ```sh $ yarn remove @next/eslint-plugin-next @stylistic/eslint-plugin eslint-import-resolver-typescript eslint-plugin-import-x eslint-plugin-jsx-a11y eslint-plugin-react eslint-plugin-react-hooks typescript-eslint eslint-plugin-n eslint-plugin-import ``` -------------------------------- ### Apply Specific Base Rule Groups Source: https://context7.com/eslint-config/airbnb-extended/llms.txt Import and apply individual rule groups from `rules.base` for fine-grained control over ESLint configurations. Useful for customizing linting without including entire presets. ```typescript import { rules } from 'eslint-config-airbnb-extended'; export default [ // Apply only specific base rule groups rules.base.bestPractices, rules.base.es6, rules.base.imports, // import-x rules for JS rules.base.stylistic, // @stylistic/eslint-plugin formatting rules // Node-specific rule groups rules.node.promises, // prefer promise-based fs/dns APIs rules.node.noUnsupportedFeatures, // React rule groups rules.react.base, rules.react.jsxA11y, rules.react.hooks, rules.react.stylistic, // TypeScript rule groups rules.typescript.base, // disables JS rules covered by TS rules.typescript.typescriptEslint, rules.typescript.imports, // import-x rules for TS files // Next.js rule groups rules.next.base, rules.next.coreWebVitals, ]; ``` -------------------------------- ### Uninstall Legacy Airbnb ESLint Packages Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/migration/upgrade-to-extended.md Remove old Airbnb ESLint packages using your preferred package manager. These are no longer needed with eslint-config-airbnb-extended. ```sh $ npm uninstall eslint-config-airbnb-base eslint-config-airbnb eslint-config-airbnb-typescript ``` ```sh $ yarn remove eslint-config-airbnb-base eslint-config-airbnb eslint-config-airbnb-typescript ``` ```sh $ pnpm remove eslint-config-airbnb-base eslint-config-airbnb eslint-config-airbnb-typescript ``` ```sh $ bun remove eslint-config-airbnb-base eslint-config-airbnb eslint-config-airbnb-typescript ``` -------------------------------- ### Import React Rules Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/config/extended-config/rules.md Import and apply React-specific rules, including JSX accessibility and hooks. Essential for maintaining consistency and correctness in React applications. ```javascript import { rules } from 'eslint-config-airbnb-extended'; export default [ // JSX Accessibility rules.react.jsxA11y, // Hooks rules.react.hooks, ]; ``` -------------------------------- ### Extend Base TypeScript Configuration Source: https://github.com/eslint-config/airbnb-extended/blob/master/configs/typescript-config/README.md To use the base TypeScript configuration, extend it in your tsconfig.json file. ```json { "extends": "@airbnb-extended/typescript-config/base" } ``` -------------------------------- ### Register Standalone ESLint Plugins Source: https://context7.com/eslint-config/airbnb-extended/llms.txt Register ESLint plugins individually using the `plugins` export to avoid 'Cannot redefine plugin' errors. Each plugin is exported as a pre-named flat config object. ```typescript import { plugins } from 'eslint-config-airbnb-extended'; export default [ // Registers @stylistic/eslint-plugin as "stylistic" plugins.stylistic, // Registers eslint-plugin-import-x as "import-x" plugins.importX, // Registers eslint-plugin-react, eslint-plugin-react-hooks, // eslint-plugin-jsx-a11y plugins.react, plugins.reactHooks, plugins.reactA11y, // Registers @next/eslint-plugin-next as "next" plugins.next, // Registers eslint-plugin-n as "n" plugins.node, // Registers typescript-eslint plugins.typescriptEslint, ]; ``` -------------------------------- ### Enable Strict Rules in ESLint Configuration Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/customization/strict-rules.md Extend your ESLint configuration with specific strict rule sets. This applies the chosen rules on top of your existing configuration, allowing for future overrides. ```ts export default [ // Your existing configs rules.base.importsStrict, rules.react.strict, rules.typescript.typescriptEslintStrict, ]; ``` -------------------------------- ### Update Import Rules for Flat Config Source: https://github.com/eslint-config/airbnb-extended/blob/master/docs/migration/upgrade-to-extended.md Adjust import rules in your ESLint configuration to use the 'import-x' namespace instead of 'import' when migrating to the extended config and Flat Config. ```js "import/no-unresolved": "off" // [!code --] "import-x/no-unresolved": "off" // [!code ++] ``` -------------------------------- ### Enable Strict Rule Groups Source: https://context7.com/eslint-config/airbnb-extended/llms.txt Opt into optional strict rule groups for maximum consistency. These are disabled by default and can be enabled per category. ```typescript import { rules } from 'eslint-config-airbnb-extended'; export default [ // ...your base config... // Strict Imports: enforces import order, separates `import type` from // value imports, prevents duplicate imports, detects unresolved imports rules.base.importsStrict, // Strict React: enforces `key` props, sorts JSX props, disables prop-types // (TypeScript is the source of truth for prop shapes) rules.react.strict, // Strict TypeScript: bans `any`, disallows `@ts-ignore` (use @ts-expect-error), // disallows non-null assertions `!`, encourages `??` and `?.` rules.typescript.typescriptEslintStrict, ]; ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.