Skip to content

Commit 2545b68

Browse files
docs(website): added maintenance docs for rule feature requests (typescript-eslint#6254)
1 parent e8d2af3 commit 2545b68

File tree

1 file changed

+32
-4
lines changed

1 file changed

+32
-4
lines changed

docs/maintenance/ISSUES.md

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,13 +93,41 @@ These bugs should be reported with a link to a GitHub repository that can be che
9393
If you cannot reproduce the issue as described using repository's README.md and issue description, it has not provided enough information.
9494
Consider using a specific response like the _Needs Full Reproduction_ response.
9595

96-
### ✨ Rule Enhancements
96+
### 🏗 Feature Requests
9797

98-
TODO: This will be filled out... soon!
98+
For any feature request, make sure the requested support is either:
9999

100-
### 🚀 New Rules
100+
- Very useful for at least one commonly used way to run TypeScript (e.g. tsc-built CLI package; bundler-managed web app)
101+
- Relevant for _most_ projects that would be using typescript-eslint
101102

102-
TODO: This will be filled out... soon!
103+
We avoid features that:
104+
105+
- Are only relevant for a minority of users, as they aren't likely worth the maintenance burden
106+
- Aren't TypeScript-specific (e.g. should be in ESLint core instead)
107+
- Are only relevant with specific userland frameworks or libraries, such as Jest or React
108+
- Are for "formatting" functionality (we [strongly recommend users use a separate dedicated formatter](../linting/troubleshooting/FORMATTING.md))
109+
110+
#### ✨ Rule Enhancements
111+
112+
We're generally accepting of rule enhancements that meet the above feature request criteria.
113+
If a rule enhancement would substantially change the target area of the rule, consider whether it should instead be a new rule.
114+
Common signs of this are the rule's original name now being inaccurate, or some options being relevant just for the old functionality.
115+
116+
Enhancements that can cause new reports to be reported are considered breaking changes.
117+
We have two common strategies for them:
118+
119+
- Treat the enhancement as a breaking change, and block merging it until the next major version
120+
- Add an option to disable the new logic: which is a breaking change if opt-in, and a non-breaking change if opt-out
121+
- Add an option to enable the new logic: which is a breaking change if opt-out, and a non-breaking change if opt-in
122+
123+
See [Can we standardize logical direction of rule options?](https://github.com/typescript-eslint/typescript-eslint/discussions/6101) for context on naming options.
124+
125+
For enhancements meant to limit which kinds of nodes the rule targets, mark the issue as blocked on [RFC: Common format to specify a type or value as a rule option](https://github.com/typescript-eslint/typescript-eslint/discussions/6017).
126+
127+
#### 🚀 New Rules
128+
129+
We're generally accepting of new rules that meet the above feature request criteria.
130+
The biggest exception is rules that can roughly be implemented with [`@typescript-eslint/ban-types`](https://typescript-eslint.io/rules/ban-types) and/or [`no-restricted-syntax`](https://eslint.org/docs/latest/rules/no-restricted-syntax).
103131

104132
## Pruning Old Issues
105133

0 commit comments

Comments
 (0)