-
-
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) - Copy
eslintrcsource 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