- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 4.8k
Open
Labels
acceptedThere is consensus among the team that this change meets the criteria for inclusionThere is consensus among the team that this change meets the criteria for inclusionbreakingThis change is backwards-incompatibleThis change is backwards-incompatiblecoreRelates to ESLint's core APIs and featuresRelates to ESLint's core APIs and featuresfeatureThis change adds a new feature to ESLintThis change adds a new feature to ESLint
Description
This issue describes the implementation plan for eslint/rfcs#9, which will take place in several phases:
Phase 1: Extract current config system
-  Create new GitHub repository (eslint/eslintrc)
-  Copyeslintrcsource files and tests into new GitHub repository
-  Create Jenkins release job for @eslint/eslintrc
-  Publish @eslint/eslintrcto npm
-  Update ESLint to use @eslint/eslintrc
- Remove in-memory filesystem from tests
-  Update CLIEngineto useCascadingConfigArrayFactoryfrom@eslint/eslintrc
Phase 2: Implement flat config with eslintrc compatibility
-  Create the FlatCompatclass ineslint/eslintrcrepository
-  Create FlatConfigArrayto represent simple configs
-  Update Linterclass to understandFlatConfigArrayobjects
-  Ensure Linter#defineRuleandLinter#definePluginthrow errors when usingFlatConfigArray
-  Add context.languageOptionsin backwards-compatible way tocontextinLinter
-  Ensure context.parserPathstill works inLinterforFlatConfigArray(for now)
-  Create FlatRuleTesterto allow rule testing withFlatConfigArrayformat
-  Create FlatESLintclass to mirrorESLintclass but useeslint.config.jsinstead
- Change Request: Matching behavior in flat config #15661
- Change Request: Config base path in flat config #15683
- Overrides of ignore patterns #15687
- Implement caching
-  Update cli.jsto search foreslint.config.jsfile and useFlatESLintif found (ESLintif not)
-  Ensure invalid CLI flags cause errors when using flat config (for example, --resolve-plugins-relative-to)
-  Switch eslint/eslintrepo to use flat config
- Document flat config
-  Release ESLint with eslintrccompatibility
- Bug: [new config system] Patterns cannot re-ignore #16416
- Bug: [new config system] Directories cannot be unignored #16415
- Bug: [new config system] Inconsistent behavior with ignored directory #16414
-  Bug: [new config system] Files outside cwdwere not found #16413
-  Bug: FlatESLintgetRulesMetaForResultsfails on anonymous files when optioncwdis set #16410
-  Bug: FlatESLintgetRulesMetaForResultsfails on messages without aruleId#16402
-  Bug: [new config system] baseConfigoption is unused inFlatESLint#16341
-  Bug: [new config system] Unexpected glob behavior in FlatESLint#16340
- Bug: [new config system] path to a directory can still lint files outside that directory #16299
- Bug: [new config system] unmatched individual patterns are not reported #16275
- Bug: [new config system] globs are ignoring dot files #16265
-  Bug: [new config system] .eslintignoredoesn't work like.gitignore#16264
- Change Request: Specifying files and ignores for eslint:recommended/eslint:all #16537
- Bug: [flat config] Caching is not supported when parser is an object #16875
Phase 3: Compatibility testing
-  Work with typescript-eslintto switch to new format and ensure it works correctly (pull request)
-  Work with eslint-plugin-importto switch to new format and ensure it works correctly (@mdjermanovic) [Fix] pass languageOptions through in child context import-js/eslint-plugin-import#2829 Support eslint flat config import-js/eslint-plugin-import#2873
-  Work with eslint-config-airbnbto switch to new format and ensure it works correctly (@mdjermanovic)
-  Work with eslint-config-standardto switch to new format and ensure it works correctly (pull request]
-  Work with eslint-plugin-nto switch configs to new format and ensure it works correctly (@mdjermanovic) (pull request)
-  Work with eslint-plugin-vueto switch configs to new format and ensure it works correctly (pull request)
-  Work with eslint-plugin-reactto switch configs to new format and ensure it works correctly (@mdjermanovic) (pull request)
-  Switch ESLint config to load external configs/plugins without FlatCompat
- Release ESLint with extended compatibility
Phase 4: General availability (v9.0.0)
- Write blog post about flat config format
-  Output warning when people use eslintrcfiles
-  Switch documentation so eslint.config.jsis the default and recommended format (link to legacyeslintrcdocs from the same page)
-  Switch Linterto use flat config by default
- Switch documentation for shareable configs to flat config format (links to legacy docs included)
- Switch documentation for plugins to flat config format (links to legacy docs included)
- Omiting any file/dir positional parameter to CLI does not give an error #14308
-  Rename ESLintclass toLegacyESLintand renameFlatESLinttoESLint
-  Delete RuleTesterclass and renameFlatRuleTestertoRuleTester
-  Update api.jsto export new values forESLintandRuleTester
-  Switch shouldUseFlatConfig()to returntrueexcept ifESLINT_USE_FLAT_CONFIGisfalse.
- Release ESLint with GA flat config
Phase 5: Remove eslintrc (v10.0.0)
- Remove old CLI flags
-  Remove context.parserPath,context.parserOptions,context.globalsinLinter(fix!: Remove deprecated rule context methods #20086, fix!: Remove deprecated RuleContext methods rewrite#263)
-  Remove configTypeconstructor option forLinter; throw error if found.
-  Report an error when eslint-envconfig comment is used (feat!: reporteslint-envcomments as errors #20128)
-  Remove eslintrcsupport (feat!: remove eslintrc support #20037)
-  Remove eslintrcdocumentation
-  Delete FlatESLintclass
-  Delete LegacyESLintclass
-  Switch shouldUseFlatConfig()to always returntrue
-  Release ESLint without eslintrc🎉
yeonjuan, haltcase, skipkayhil, SilencerWeb, chyzwar and 123 moretunnckoCore, ExE-Boss, cascornelissen, edmorley, coderaiser and 30 moretunnckoCore, publicJorn, cascornelissen, mightyiam, nwalters512 and 37 morehaltcase, ExE-Boss, nwalters512, coderaiser, tadhgmister and 24 moretadhgmister, leonheess, ArturBaybulatov, j0hnm4r5, davies-jack and 8 more
Metadata
Metadata
Assignees
Labels
acceptedThere is consensus among the team that this change meets the criteria for inclusionThere is consensus among the team that this change meets the criteria for inclusionbreakingThis change is backwards-incompatibleThis change is backwards-incompatiblecoreRelates to ESLint's core APIs and featuresRelates to ESLint's core APIs and featuresfeatureThis change adds a new feature to ESLintThis change adds a new feature to ESLint