{"id":20875894,"url":"https://github.com/saqqdy/eslint-sets","last_synced_at":"2026-03-15T08:56:52.065Z","repository":{"id":36956660,"uuid":"475701418","full_name":"saqqdy/eslint-sets","owner":"saqqdy","description":"A eslint plugin for config sets","archived":false,"fork":false,"pushed_at":"2024-11-20T06:19:27.000Z","size":1940,"stargazers_count":7,"open_issues_count":6,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-23T19:35:05.749Z","etag":null,"topics":["config-ts","eslint-config","eslint-egg","eslint-nuxt","eslint-react","eslint-sets","eslint-svelte","eslint-vue","eslint-vue3"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/saqqdy.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["saqqdy"]}},"created_at":"2022-03-30T03:12:28.000Z","updated_at":"2024-11-20T06:18:31.000Z","dependencies_parsed_at":"2025-01-24T12:43:26.990Z","dependency_job_id":null,"html_url":"https://github.com/saqqdy/eslint-sets","commit_stats":{"total_commits":162,"total_committers":3,"mean_commits":54.0,"dds":"0.16049382716049387","last_synced_commit":"17dd4fdd059194688b60a91fe5418d5d592c9b42"},"previous_names":[],"tags_count":43,"template":false,"template_full_name":null,"purl":"pkg:github/saqqdy/eslint-sets","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saqqdy%2Feslint-sets","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saqqdy%2Feslint-sets/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saqqdy%2Feslint-sets/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saqqdy%2Feslint-sets/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/saqqdy","download_url":"https://codeload.github.com/saqqdy/eslint-sets/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saqqdy%2Feslint-sets/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279006590,"owners_count":26084130,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["config-ts","eslint-config","eslint-egg","eslint-nuxt","eslint-react","eslint-sets","eslint-svelte","eslint-vue","eslint-vue3"],"created_at":"2024-11-18T06:49:00.444Z","updated_at":"2026-03-15T08:56:52.058Z","avatar_url":"https://github.com/saqqdy.png","language":"TypeScript","funding_links":["https://github.com/sponsors/saqqdy"],"categories":[],"sub_categories":[],"readme":"# @eslint-sets/eslint-config\n\n[![NPM version][npm-image]][npm-url]\n[![License][license-image]][license-url]\n\nEnglish | [简体中文](./README_CN.md)\n\nModern ESLint config with flat config support for Vue, React, Svelte, TypeScript, Next.js, Nuxt, Astro, Angular, UnoCSS and more.\n\n## Quick Try\n\nTry it online with StackBlitz:\n\n| Framework | Link |\n| --------- | ---- |\n| Vue 3 | [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/saqqdy/eslint-sets/tree/master/examples/vue3) |\n| Vue 2 | [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/saqqdy/eslint-sets/tree/master/examples/vue2) |\n| React | [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/saqqdy/eslint-sets/tree/master/examples/react) |\n| TypeScript | [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/saqqdy/eslint-sets/tree/master/examples/typescript) |\n| Svelte | [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/saqqdy/eslint-sets/tree/master/examples/svelte) |\n| Next.js | [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/saqqdy/eslint-sets/tree/master/examples/nextjs) |\n| Nuxt | [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/saqqdy/eslint-sets/tree/master/examples/nuxt) |\n| Astro | [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/saqqdy/eslint-sets/tree/master/examples/astro) |\n| Angular | [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/saqqdy/eslint-sets/tree/master/examples/angular) |\n| UnoCSS | [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/saqqdy/eslint-sets/tree/master/examples/unocss) |\n\n## Features\n\n- 🚀 **ESLint v9 Flat Config** - Uses the modern flat config format\n- 🎨 **@stylistic Integration** - Default formatting with `@stylistic/eslint-plugin` (no Prettier needed)\n- 📝 **TypeScript TypeGen** - Auto-generated types for all rules with full IntelliSense support\n- ✨ **Prettier Support** - Optional Prettier integration for those who prefer it\n- 📦 **Auto-detection** - Automatically detects installed frameworks\n- 🔧 **Highly Configurable** - Fine-grained control over enabled features\n- 🙈 **Git Ignore Support** - Automatically read `.gitignore` patterns (default: on)\n- 🛠️ **Disables Support** - Automatically disable strict rules in config files\n- 🖥️ **Command Support** - Relaxed rules for command-line scripts\n- 🏷️ **Project Types** - Support for `app` and `lib` project types\n- ♿ **Accessibility** - Optional a11y rules for Vue and React\n- 📝 **Auto-sort** - Automatically sort package.json and tsconfig.json\n- 🔍 **Editor Detection** - Automatically detect editor environment\n- 🔎 **Config Inspector** - Visual tool for inspecting your ESLint config\n- 📊 **Perfectionist Sorting** - Import/export sorting with natural ordering\n\n## Supported Frameworks\n\n| Framework  | Auto-detect | Notes                                           |\n| ---------- | :---------: | ----------------------------------------------- |\n| TypeScript |     ✅      | Default enabled                                 |\n| Vue        |     ✅      | Vue 2 \u0026 3 support, with a11y option             |\n| React      |     ✅      | With hooks, refresh, and React Compiler support |\n| Svelte     |     ✅      |                                                 |\n| Solid      |     ✅      |                                                 |\n| Next.js    |     ✅      | Requires `@next/eslint-plugin-next`             |\n| Nuxt       |     ✅      |                                                 |\n| Astro      |     ✅      | Requires `eslint-plugin-astro`                  |\n| Angular    |     ✅      | Requires `@angular-eslint/eslint-plugin`        |\n| UnoCSS     |     ✅      | Requires `@unocss/eslint-plugin`                |\n\n## Installation\n\n```shell\n# use pnpm\npnpm install -D @eslint-sets/eslint-config eslint\n\n# use npm\nnpm install -D @eslint-sets/eslint-config eslint\n\n# use bun\nbun add -D @eslint-sets/eslint-config eslint\n```\n\n## Requirements\n\n- **Node.js**: `^18.18.0` or `^20.9.0` or `\u003e=21.1.0`\n- **ESLint**: `^9.10.0` or `^9.22.0`\n\n\u003e Note: `eslint-plugin-toml` requires Node.js `^20.19.0 || ^22.13.0 || \u003e=24`. If you need TOML support on Node.js 18, consider downgrading to `eslint-plugin-toml@0.13.1`.\n\n## Quick Start\n\n### Using CLI (Recommended)\n\nRun the interactive CLI to set up your project:\n\n```shell\n# use pnpm\npnpm dlx @eslint-sets/eslint-config\n\n# use npm\nnpx @eslint-sets/eslint-config\n\n# use bun\nbunx @eslint-sets/eslint-config\n```\n\nThe CLI will guide you through:\n\n- Project type selection (Application/Library)\n- TypeScript support\n- Framework selection (Vue, React, Svelte, Solid, Next.js, Nuxt, Astro, Angular, UnoCSS)\n- Accessibility options\n- Formatter choice (Prettier/Stylistic)\n- Additional options (.gitignore, auto-sort, etc.)\n\n### Manual Setup\n\nCreate an `eslint.config.ts` file in your project root:\n\n```typescript\n// eslint.config.ts\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig()\n```\n\n## Usage\n\n### With Options\n\n```typescript\n// eslint.config.ts\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig({\n\t// Angular support (default: 'auto' - auto-detect)\n\tangular: true,\n\n\t// Astro support (default: 'auto' - auto-detect)\n\tastro: true,\n\n\t// Relax rules for scripts (default: true)\n\t// Applies to: scripts/**, bin/**, cli/**, tasks/**, tools/**\n\t// Allows: console, process.exit, process.env, shebang, require, etc.\n\tcommand: true,\n\t// Disable rules in config files (default: true)\n\tdisables: true,\n\n\t// e18e modernization rules (default: false)\n\te18e: true,\n\t// ESLint comments rules (default: true)\n\teslintComments: true,\n\n\t// External formatters (default: false)\n\tformatters: {\n\t\tcss: 'prettier',\n\t\tgraphql: 'prettier',\n\t\thtml: 'prettier',\n\t\tmarkdown: 'prettier',\n\t\tsvg: 'prettier',\n\t\txml: 'prettier',\n\t},\n\n\t// Auto-read .gitignore (default: true)\n\tgitignore: true,\n\n\t// Files to ignore\n\tignores: ['**/dist/**', '**/node_modules/**'],\n\n\t// Or modify defaults:\n\tignores: (defaults) =\u003e [...defaults, '**/custom/**'],\n\n\t// Import rules (default: true)\n\timports: true,\n\n\t// JSON/JSONC support (default: true)\n\tjsonc: true,\n\n\t// JSX Accessibility rules (default: false)\n\tjsxA11y: true,\n\n\t// Markdown support (default: true)\n\tmarkdown: true,\n\n\t// Next.js support (default: 'auto' - auto-detect)\n\tnextjs: true,\n\t// Node.js rules (default: true)\n\tnode: true,\n\n\t// Nuxt support (default: 'auto' - auto-detect)\n\tnuxt: true,\n\n\t// Perfectionist sorting (default: true)\n\tperfectionist: true,\n\n\t// pnpm workspace support (default: false)\n\tpnpm: true,\n\n\t// Prettier integration (default: false)\n\t// Note: Must set stylistic: false to use prettier\n\tprettier: false,\n\n\t// React support (default: 'auto' - auto-detect)\n\treact: true,\n\n\t// Or with options:\n\treact: {\n\t\treactCompiler: true, // React Compiler support\n\t},\n\n\t// Regexp rules (default: true)\n\tregexp: true,\n\n\t// Custom rule overrides\n\trules: {\n\t\t'no-console': 'off',\n\t},\n\n\t// Solid support (default: 'auto' - auto-detect)\n\tsolid: true,\n\n\t// Auto-sort package.json (default: true)\n\tsortPackageJson: true,\n\n\t// Auto-sort tsconfig.json (default: true)\n\tsortTsconfig: true,\n\n\t// Stylistic formatting (default: true)\n\t// Uses @stylistic/eslint-plugin for code formatting\n\tstylistic: true,\n\n\t// Or with custom options:\n\tstylistic: {\n\t\tarrowParens: 'always', // 'always' | 'avoid'\n\t\tbracketSpacing: true, // boolean\n\t\tindent: 2, // 'tab' | number\n\t\tjsxQuotes: 'prefer-double', // 'prefer-double' | 'prefer-single'\n\t\tquotes: 'single', // 'single' | 'double'\n\t\tsemi: false, // boolean\n\t\ttrailingComma: 'always-multiline', // 'none' | 'es5' | 'always-multiline' | 'all'\n\t},\n\n\t// Svelte support (default: 'auto' - auto-detect)\n\tsvelte: true,\n\n\t// Test file support (default: true)\n\ttest: true,\n\n\t// Project type: 'app' (default) or 'lib'\n\ttype: 'lib',\n\n\t// TypeScript support (default: true)\n\ttypescript: true,\n\n\t// Unicorn rules (default: true)\n\tunicorn: true,\n\n\t// UnoCSS support (default: 'auto' - auto-detect)\n\tunocss: true,\n\n\t// Vue support (default: 'auto' - auto-detect)\n\tvue: true,\n\t// Or with options:\n\tvue: {\n\t\ta11y: true, // Enable accessibility rules\n\t\tvueVersion: 3,\n\t},\n\n\t// YAML support (default: true)\n\tyaml: true,\n})\n```\n\n### Project Types\n\n```typescript\n// Application project (default)\nexport default eslintConfig({\n\ttype: 'app',\n})\n\n// Library project - stricter rules\nexport default eslintConfig({\n\ttype: 'lib',\n})\n```\n\n### Stylistic vs Prettier\n\nThis config supports two formatting approaches:\n\n1. **Stylistic** (default): Uses `@stylistic/eslint-plugin` for pure ESLint-based formatting - no additional tool needed.\n2. **Prettier**: Uses `eslint-plugin-prettier` to integrate Prettier with ESLint.\n\n```typescript\n// Use Stylistic (default)\nexport default eslintConfig({\n\tstylistic: true, // or just use defaults\n})\n\n// Use Stylistic with custom options\nexport default eslintConfig({\n\tstylistic: {\n\t\tarrowParens: 'always', // 'always' | 'avoid'\n\t\tbracketSpacing: true, // boolean\n\t\tindent: 2, // 'tab' | number\n\t\tjsxQuotes: 'prefer-double', // 'prefer-double' | 'prefer-single'\n\t\tquotes: 'single', // 'single' | 'double'\n\t\tsemi: false, // boolean\n\t\ttrailingComma: 'always-multiline', // 'none' | 'es5' | 'always-multiline' | 'all'\n\t},\n})\n\n// Use Prettier instead (must disable stylistic)\nexport default eslintConfig({\n\tprettier: true,\n\tstylistic: false,\n})\n\n// Use Prettier with custom options\nexport default eslintConfig({\n\tprettier: {\n\t\tprintWidth: 240,\n\t\tsemi: false,\n\t\tsingleQuote: true,\n\t\ttabWidth: 2,\n\t\ttrailingComma: 'all',\n\t\tuseTabs: false,\n\t},\n\tstylistic: false,\n})\n```\n\n**Note**: Stylistic and Prettier are mutually exclusive. When `stylistic` is enabled (default), Prettier is automatically disabled.\n\n### Accessibility Rules\n\n```typescript\n// Vue accessibility\nexport default eslintConfig({\n\tvue: {\n\t\ta11y: true,\n\t},\n})\n\n// React/JSX accessibility\nexport default eslintConfig({\n\tjsxA11y: true,\n})\n\n// Or standalone JSX a11y\nexport default eslintConfig({\n\tjsxA11y: true,\n})\n```\n\n### Auto-Detection\n\nBy default, the config auto-detects installed frameworks and enables the appropriate rules:\n\n```typescript\n// eslint.config.ts\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig({\n\tautoDetect: true, // Enable auto-detection (default: true)\n})\n```\n\n### Framework-Specific Configurations\n\n#### Vue Project\n\n```typescript\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig({\n\ttype: 'lib',\n\ttypescript: true,\n\tvue: {\n\t\ta11y: true,\n\t\tvueVersion: 3,\n\t},\n})\n```\n\n#### React Project\n\n```typescript\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig({\n\treact: {\n\t\treactCompiler: true,\n\t},\n\ttypescript: true,\n})\n```\n\n#### Next.js Project\n\n```typescript\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig({\n\tnextjs: true,\n\treact: true,\n\ttypescript: true,\n})\n```\n\n#### Nuxt Project\n\n```typescript\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig({\n\tnuxt: true,\n\ttypescript: true,\n\tvue: true,\n})\n```\n\n#### Angular Project\n\n```typescript\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig({\n\tangular: true,\n\ttypescript: true,\n})\n```\n\n#### Svelte Project\n\n```typescript\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig({\n\tsvelte: true,\n\ttypescript: true,\n})\n```\n\n#### Astro Project\n\n```typescript\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig({\n\tastro: true,\n\ttypescript: true,\n})\n```\n\n#### UnoCSS Project\n\n```typescript\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig({\n\tunocss: true,\n})\n```\n\n### Extending the Config\n\n```typescript\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig({\n\textends: [\n\t\t// Additional flat configs\n\t],\n\trules: {\n\t\t// Override rules\n\t},\n})\n```\n\n## TypeScript Support\n\nThis package provides full TypeScript support with auto-generated types:\n\n```typescript\nimport type { TypedFlatConfigItem, Rules, RuleOptions, ConfigNames } from '@eslint-sets/eslint-config'\n\n// TypedFlatConfigItem - Full type checking for config objects\nconst myConfig: TypedFlatConfigItem = {\n\tname: 'my-config',\n\trules: {\n\t\t'no-console': 'off',\n\t\t'@stylistic/semi': ['error', 'always'], // IDE shows available options\n\t},\n}\n\n// Rules - All available rule names with type checking\nconst myRules: Rules = {\n\t'no-console': 'off',\n}\n\n// ConfigNames - All available config names\ntype MyConfigs = ConfigNames // 'eslint-sets/javascript' | 'eslint-sets/vue' | ...\n```\n\n### Regenerating Types\n\nIf you're contributing to this package, regenerate types after adding new plugins:\n\n```shell\npnpm run gen\n```\n\nThis generates `src/typegen.d.ts` with all rule types.\n\n## Config Inspector\n\nVisualize and debug your ESLint configuration using the built-in Config Inspector:\n\n```shell\n# Run the inspector\nnpx @eslint/config-inspector\n\n# Or using pnpm\npnpm inspector\n```\n\nVisit http://localhost:7777/ to view and interact with your ESLint config. The inspector shows:\n\n- All configured rules and their sources\n- File patterns and their matching configs\n- Plugin information\n- Rule configurations\n\nYou can also build a static version for sharing:\n\n```shell\nnpx @eslint/config-inspector build\n```\n\n## Individual Configs\n\nYou can also import individual configurations:\n\n```typescript\nimport {\n\tjavascript,\n\ttypescript,\n\tvue,\n\treact,\n\tsvelte,\n\tsolid,\n\tjsonc,\n\tyaml,\n\tmarkdown,\n\ttoml,\n\timports,\n\tunicorn,\n\tperfectionist,\n\tregexp,\n\ttest,\n\tnode,\n\tprettier,\n\tstylistic,\n\tdisables,\n\tcommand,\n\tnextjs,\n\tnuxt,\n\tastro,\n\tangular,\n\tunocss,\n\te18e,\n\tpnpm,\n\tformatters,\n\teslintComments,\n\tjsxA11y,\n\tvueA11y,\n\tnoOnlyTests,\n\tsortPackageJson,\n\tsortTsconfig,\n} from '@eslint-sets/eslint-config'\n```\n\n## Peer Dependencies\n\n| Package    | Version                                     |\n| ---------- | ------------------------------------------- |\n| eslint     | ^9.10.0 or ^9.22.0                          |\n| prettier   | ^3.5.3 (optional, for Prettier integration) |\n| typescript | \u003e=5.0.0 (optional, for TypeScript support)  |\n\n## System Requirements\n\n| Requirement | Version                                  |\n| ----------- | ---------------------------------------- |\n| Node.js     | ^18.18.0 or ^20.9.0 or \u003e=21.1.0          |\n| ESLint      | ^9.10.0 or ^9.22.0                       |\n\n## Optional Dependencies\n\nThe following packages are optional and will be used if installed:\n\n### React\n\n- `@eslint-react/eslint-plugin` - Modern React linting (includes core, dom, web-api, hooks-extra, naming-convention, debug)\n- `eslint-plugin-react-refresh` - React Refresh support\n\n### Vue\n\n- `eslint-plugin-vuejs-accessibility` - Vue accessibility rules\n\n### Svelte\n\n- `eslint-plugin-svelte` - Svelte support\n- `svelte` - Svelte parser\n- `svelte-eslint-parser` - Svelte ESLint parser\n\n### Next.js\n\n- `@next/eslint-plugin-next` - Next.js specific rules\n\n### Astro\n\n- `eslint-plugin-astro` - Astro support\n- `astro-eslint-parser` - Astro ESLint parser\n\n### Angular\n\n- `@angular-eslint/eslint-plugin` - Angular support\n- `@angular-eslint/eslint-plugin-template` - Angular template rules\n- `@angular-eslint/template-parser` - Angular template parser\n\n### UnoCSS\n\n- `@unocss/eslint-plugin` - UnoCSS rules\n\n### Accessibility\n\n- `eslint-plugin-jsx-a11y` - JSX accessibility rules\n\n### Modernization\n\n- `@e18e/eslint-plugin` - Code modernization rules\n\n### Workspace\n\n- `eslint-plugin-pnpm` - pnpm workspace rules\n\n### Formatters\n\n- `eslint-plugin-format` - External formatters for CSS, HTML, etc.\n\n### Markdown\n\n- `@eslint/markdown` - Markdown linting\n\n## Migration from v5\n\nIf you're migrating from the old `@eslint-sets/eslint-config-*` packages, all sub-packages have been merged into a single package `@eslint-sets/eslint-config`.\n\n### Migration Map\n\n| Old Package (v5) | New Config (v6) |\n| ---------------- | --------------- |\n| `@eslint-sets/eslint-config-basic` | `eslintConfig()` (default) |\n| `@eslint-sets/eslint-config-ts` | `eslintConfig({ typescript: true })` |\n| `@eslint-sets/eslint-config-vue` | `eslintConfig({ vue: true })` |\n| `@eslint-sets/eslint-config-vue3` | `eslintConfig({ vue: { vueVersion: 3 } })` |\n| `@eslint-sets/eslint-config-react` | `eslintConfig({ react: true })` |\n| `@eslint-sets/eslint-config-svelte` | `eslintConfig({ svelte: true })` |\n| `@eslint-sets/eslint-config-nuxt` | `eslintConfig({ nuxt: true, vue: true })` |\n| `@eslint-sets/eslint-config-egg` | `eslintConfig({ node: true, typescript: true })` |\n\n### Basic\n\n```javascript\n// Before (v5)\n// .eslintrc.js\nmodule.exports = {\n\textends: '@eslint-sets/eslint-config-basic',\n}\n\n// After (v6)\n// eslint.config.ts\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig()\n```\n\n### TypeScript\n\n```javascript\n// Before (v5)\n// .eslintrc.js\nmodule.exports = {\n\textends: '@eslint-sets/eslint-config-ts',\n}\n\n// After (v6)\n// eslint.config.ts\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig({\n\ttypescript: true,\n})\n```\n\n### Vue 2\n\n```javascript\n// Before (v5)\n// .eslintrc.js\nmodule.exports = {\n\textends: '@eslint-sets/eslint-config-vue',\n}\n\n// After (v6)\n// eslint.config.ts\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig({\n\tvue: {\n\t\tvueVersion: 2,\n\t},\n})\n```\n\n### Vue 3\n\n```javascript\n// Before (v5)\n// .eslintrc.js\nmodule.exports = {\n\textends: '@eslint-sets/eslint-config-vue3',\n}\n\n// After (v6)\n// eslint.config.ts\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig({\n\tvue: {\n\t\tvueVersion: 3,\n\t},\n})\n```\n\n### React\n\n```javascript\n// Before (v5)\n// .eslintrc.js\nmodule.exports = {\n\textends: '@eslint-sets/eslint-config-react',\n}\n\n// After (v6)\n// eslint.config.ts\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig({\n\treact: true,\n})\n```\n\n### Svelte\n\n```javascript\n// Before (v5)\n// .eslintrc.js\nmodule.exports = {\n\textends: '@eslint-sets/eslint-config-svelte',\n}\n\n// After (v6)\n// eslint.config.ts\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig({\n\tsvelte: true,\n})\n```\n\n### Nuxt\n\n```javascript\n// Before (v5)\n// .eslintrc.js\nmodule.exports = {\n\textends: '@eslint-sets/eslint-config-nuxt',\n}\n\n// After (v6)\n// eslint.config.ts\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig({\n\tnuxt: true,\n\tvue: true,\n})\n```\n\n### Egg (Node.js)\n\n```javascript\n// Before (v5)\n// .eslintrc.js\nmodule.exports = {\n\textends: '@eslint-sets/eslint-config-egg',\n}\n\n// After (v6)\n// eslint.config.ts\nimport eslintConfig from '@eslint-sets/eslint-config'\n\nexport default eslintConfig({\n\tnode: true,\n\ttypescript: true,\n})\n```\n\n### Key Changes in v6\n\n1. **Flat Config**: v6 uses ESLint's new flat config format (`eslint.config.ts` instead of `.eslintrc.js`)\n2. **Single Package**: All sub-packages merged into one package\n3. **Auto-detection**: Frameworks are auto-detected by default\n4. **Stylistic**: Default formatting uses `@stylistic/eslint-plugin` instead of Prettier\n5. **TypeScript Types**: Auto-generated types for all rules\n\n## VS Code Integration\n\nAdd to your `.vscode/settings.json`:\n\n```json\n{\n\t\"editor.codeActionsOnSave\": {\n\t\t\"source.fixAll.eslint\": \"explicit\"\n\t},\n\t\"eslint.experimental.useFlatConfig\": true,\n\t\"eslint.validate\": [\n\t\t\"javascript\",\n\t\t\"javascriptreact\",\n\t\t\"typescript\",\n\t\t\"typescriptreact\",\n\t\t\"vue\",\n\t\t\"html\",\n\t\t\"markdown\",\n\t\t\"json\",\n\t\t\"jsonc\",\n\t\t\"yaml\",\n\t\t\"toml\",\n\t\t\"astro\",\n\t\t\"svelte\"\n\t]\n}\n```\n\n## Changelog\n\nSee [CHANGELOG.md](./CHANGELOG.md) for release history.\n\n## License\n\n[MIT](LICENSE)\n\n## Issues \u0026 Support\n\nPlease open an issue [here](https://github.com/saqqdy/eslint-sets/issues).\n\n[npm-image]: https://img.shields.io/npm/v/@eslint-sets/eslint-config.svg?style=flat-square\n[npm-url]: https://npmjs.org/package/@eslint-sets/eslint-config\n[license-image]: https://img.shields.io/badge/License-MIT-blue.svg\n[license-url]: LICENSE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaqqdy%2Feslint-sets","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaqqdy%2Feslint-sets","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaqqdy%2Feslint-sets/lists"}