Skip to content

Commit 657d53c

Browse files
docs(eslint-plugin): add Deprecating Formatting Rules blog post (typescript-eslint#8117)
* chore(website): add Deprecating Formatting Rules blog post * Apply suggestions from code review Co-authored-by: auvred <[email protected]> * Update packages/website/blog/2023-12-25-deprecating-formatting-rules.md Co-authored-by: auvred <[email protected]> * Update packages/website/blog/2023-12-25-deprecating-formatting-rules.md Co-authored-by: auvred <[email protected]> * Ran format --write * Add no-extra-semi too * Generalize formatting notice to @stylistic/ rules --------- Co-authored-by: auvred <[email protected]>
1 parent eb16cc7 commit 657d53c

22 files changed

+96
-29
lines changed

Diff for: packages/eslint-plugin/src/rules/block-spacing.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export default createRule<Options, MessageIds>({
1818
name: 'block-spacing',
1919
meta: {
2020
deprecated: true,
21-
replacedBy: ['@stylistic/block-spacing'],
21+
replacedBy: ['@stylistic/ts/block-spacing'],
2222
type: 'layout',
2323
docs: {
2424
description:

Diff for: packages/eslint-plugin/src/rules/brace-style.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export default createRule<Options, MessageIds>({
1717
name: 'brace-style',
1818
meta: {
1919
deprecated: true,
20-
replacedBy: ['@stylistic/brace-style'],
20+
replacedBy: ['@stylistic/ts/brace-style'],
2121
type: 'layout',
2222
docs: {
2323
description: 'Enforce consistent brace style for blocks',

Diff for: packages/eslint-plugin/src/rules/comma-dangle.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export default createRule<Options, MessageIds>({
4747
name: 'comma-dangle',
4848
meta: {
4949
deprecated: true,
50-
replacedBy: ['@stylistic/comma-dangle'],
50+
replacedBy: ['@stylistic/ts/comma-dangle'],
5151
type: 'layout',
5252
docs: {
5353
description: 'Require or disallow trailing commas',

Diff for: packages/eslint-plugin/src/rules/comma-spacing.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export default createRule<Options, MessageIds>({
2323
name: 'comma-spacing',
2424
meta: {
2525
deprecated: true,
26-
replacedBy: ['@stylistic/comma-spacing'],
26+
replacedBy: ['@stylistic/ts/comma-spacing'],
2727
type: 'layout',
2828
docs: {
2929
description: 'Enforce consistent spacing before and after commas',

Diff for: packages/eslint-plugin/src/rules/func-call-spacing.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export default createRule<Options, MessageIds>({
2424
name: 'func-call-spacing',
2525
meta: {
2626
deprecated: true,
27-
replacedBy: ['@stylistic/func-call-spacing'],
27+
replacedBy: ['@stylistic/ts/func-call-spacing'],
2828
type: 'layout',
2929
docs: {
3030
description:

Diff for: packages/eslint-plugin/src/rules/indent.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ export default createRule<Options, MessageIds>({
9393
name: 'indent',
9494
meta: {
9595
deprecated: true,
96-
replacedBy: ['@stylistic/indent'],
96+
replacedBy: ['@stylistic/ts/indent'],
9797
type: 'layout',
9898
docs: {
9999
description: 'Enforce consistent indentation',

Diff for: packages/eslint-plugin/src/rules/key-spacing.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export default createRule<Options, MessageIds>({
2828
name: 'key-spacing',
2929
meta: {
3030
deprecated: true,
31-
replacedBy: ['@stylistic/key-spacing'],
31+
replacedBy: ['@stylistic/ts/key-spacing'],
3232
type: 'layout',
3333
docs: {
3434
description:

Diff for: packages/eslint-plugin/src/rules/keyword-spacing.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export default createRule<Options, MessageIds>({
3838
name: 'keyword-spacing',
3939
meta: {
4040
deprecated: true,
41-
replacedBy: ['@stylistic/keyword-spacing'],
41+
replacedBy: ['@stylistic/ts/keyword-spacing'],
4242
type: 'layout',
4343
docs: {
4444
description: 'Enforce consistent spacing before and after keywords',

Diff for: packages/eslint-plugin/src/rules/lines-around-comment.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export default createRule<Options, MessageIds>({
5151
name: 'lines-around-comment',
5252
meta: {
5353
deprecated: true,
54-
replacedBy: ['@stylistic/lines-around-comment'],
54+
replacedBy: ['@stylistic/ts/lines-around-comment'],
5555
type: 'layout',
5656
docs: {
5757
description: 'Require empty lines around comments',

Diff for: packages/eslint-plugin/src/rules/lines-between-class-members.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export default createRule<Options, MessageIds>({
3434
name: 'lines-between-class-members',
3535
meta: {
3636
deprecated: true,
37-
replacedBy: ['@stylistic/line-between-class-members'],
37+
replacedBy: ['@stylistic/ts/lines-between-class-members'],
3838
type: 'layout',
3939
docs: {
4040
description: 'Require or disallow an empty line between class members',

Diff for: packages/eslint-plugin/src/rules/member-delimiter-style.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ export default createRule<Options, MessageIds>({
137137
name: 'member-delimiter-style',
138138
meta: {
139139
deprecated: true,
140-
replacedBy: ['@stylistic/member-delimiter-style'],
140+
replacedBy: ['@stylistic/ts/member-delimiter-style'],
141141
type: 'layout',
142142
docs: {
143143
description:

Diff for: packages/eslint-plugin/src/rules/no-extra-parens.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export default createRule<Options, MessageIds>({
2121
name: 'no-extra-parens',
2222
meta: {
2323
deprecated: true,
24-
replacedBy: ['@stylistic/no-extra-parens'],
24+
replacedBy: ['@stylistic/ts/no-extra-parens'],
2525
type: 'layout',
2626
docs: {
2727
description: 'Disallow unnecessary parentheses',

Diff for: packages/eslint-plugin/src/rules/object-curly-spacing.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export default createRule<Options, MessageIds>({
2929
description: 'Enforce consistent spacing inside braces',
3030
extendsBaseRule: true,
3131
},
32-
replacedBy: ['@stylistic/object-curly-spacing'],
32+
replacedBy: ['@stylistic/ts/object-curly-spacing'],
3333
},
3434
defaultOptions: ['never'],
3535
create(context) {

Diff for: packages/eslint-plugin/src/rules/padding-line-between-statements.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -591,7 +591,7 @@ export default createRule<Options, MessageIds>({
591591
name: 'padding-line-between-statements',
592592
meta: {
593593
deprecated: true,
594-
replacedBy: ['@stylistic/padding-line-between-statements'],
594+
replacedBy: ['@stylistic/ts/padding-line-between-statements'],
595595
type: 'layout',
596596
docs: {
597597
description: 'Require or disallow padding lines between statements',

Diff for: packages/eslint-plugin/src/rules/quotes.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export default createRule<Options, MessageIds>({
1717
name: 'quotes',
1818
meta: {
1919
deprecated: true,
20-
replacedBy: ['@stylistic/quotes'],
20+
replacedBy: ['@stylistic/ts/quotes'],
2121
type: 'layout',
2222
docs: {
2323
description:

Diff for: packages/eslint-plugin/src/rules/semi.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export default createRule<Options, MessageIds>({
1717
name: 'semi',
1818
meta: {
1919
deprecated: true,
20-
replacedBy: ['@stylistic/semi'],
20+
replacedBy: ['@stylistic/ts/semi'],
2121
type: 'layout',
2222
docs: {
2323
description: 'Require or disallow semicolons instead of ASI',

Diff for: packages/eslint-plugin/src/rules/space-before-blocks.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export default createRule<Options, MessageIds>({
1717
name: 'space-before-blocks',
1818
meta: {
1919
deprecated: true,
20-
replacedBy: ['@stylistic/space-before-blocks'],
20+
replacedBy: ['@stylistic/ts/space-before-blocks'],
2121
type: 'layout',
2222
docs: {
2323
description: 'Enforce consistent spacing before blocks',

Diff for: packages/eslint-plugin/src/rules/space-before-function-paren.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export default createRule<Options, MessageIds>({
2121
name: 'space-before-function-paren',
2222
meta: {
2323
deprecated: true,
24-
replacedBy: ['@stylistic/space-before-function-paren'],
24+
replacedBy: ['@stylistic/ts/space-before-function-paren'],
2525
type: 'layout',
2626
docs: {
2727
description: 'Enforce consistent spacing before function parenthesis',

Diff for: packages/eslint-plugin/src/rules/space-infix-ops.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export default createRule<Options, MessageIds>({
1919
name: 'space-infix-ops',
2020
meta: {
2121
deprecated: true,
22-
replacedBy: ['@stylistic/space-infix-ops'],
22+
replacedBy: ['@stylistic/ts/space-infix-ops'],
2323
type: 'layout',
2424
docs: {
2525
description: 'Require spacing around infix operators',

Diff for: packages/eslint-plugin/src/rules/type-annotation-spacing.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ export default createRule<Options, MessageIds>({
103103
name: 'type-annotation-spacing',
104104
meta: {
105105
deprecated: true,
106-
replacedBy: ['@stylistic/type-annotation-spacing'],
106+
replacedBy: ['@stylistic/ts/type-annotation-spacing'],
107107
type: 'layout',
108108
docs: {
109109
description: 'Require consistent spacing around type annotations',
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
---
2+
authors:
3+
- image_url: https://www.joshuakgoldberg.com/img/josh.jpg
4+
name: Josh Goldberg
5+
title: typescript-eslint Maintainer
6+
url: https://github.com/JoshuaKGoldberg
7+
description: We're following ESLint's lead in moving our formatting lint rules to the ESLint Stylistic project.
8+
slug: deprecating-formatting-rules
9+
tags: [formatter, formatting, prettier, style, stylistic]
10+
title: Deprecating Formatting Rules
11+
---
12+
13+
[ESLint recently announced their plan to deprecate their core formatting rules](https://eslint.org/blog/2023/10/deprecating-formatting-rules).
14+
The [ESLint Stylistic](https://eslint.style) project has taken over maintenance of formatting rules.
15+
16+
As a result, we in typescript-eslint are now able to deprecate our formatting rules as well.
17+
We'll keep these deprecated rules available until our next major version.
18+
19+
<!--truncate-->
20+
21+
## Context: Formatting Rules
22+
23+
The ESLint blog post thoroughly explains the history and tradeoffs of formatting rules.
24+
See also [ESLint's 2020 Changes to Rule Policies blog post](https://eslint.org/blog/2020/05/changes-to-rules-policies/#what-are-the-changes) and our _[What About Formatting?](/linting/troubleshooting/formatting)_ docs.
25+
The performance downsides of formatting rules are heightened when [linting with type information](/linting/typed-linting).
26+
27+
## Timelines
28+
29+
[v6.16.0](https://github.com/typescript-eslint/typescript-eslint/releases/tag/v6.16.0), released December 25th, 2023, marks the rules as deprecated.
30+
Deprecation is only a documentation change.
31+
Per semantic versioning, formatting-related rules will remain available for all releases of typescript-eslint in the current major version, v6.
32+
33+
**Our next major version, v7, will remove all deprecated rules.**
34+
35+
## Upgrading to ESLint Stylistic
36+
37+
Although you can continue to use formatting rules in typescript-eslint for now, we don't plan on adding any new features or fixes to the rules.
38+
You'll want to switch to using their equivalents from [ESLint Stylistic](https://eslint.style).
39+
40+
See the [ESLint Stylistic > Getting Started](https://eslint.style/guide/getting-started) guide for how to switch formatting rules to that project.
41+
The equivalent stylistic rules for deprecated typescript-eslint rules are summarized in this table:
42+
43+
| typescript-eslint Rule | ESLint Stylistic Rule |
44+
| ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
45+
| [`@typescript-eslint/block-spacing`](/rules/block-spacing) | [`@stylistic/block-spacing`](https://eslint.style/rules/ts/block-spacing) |
46+
| [`@typescript-eslint/brace-style`](/rules/brace-style) | [`@stylistic/brace-style`](https://eslint.style/rules/ts/brace-style) |
47+
| [`@typescript-eslint/comma-dangle`](/rules/comma-dangle) | [`@stylistic/comma-dangle`](https://eslint.style/rules/ts/comma-dangle) |
48+
| [`@typescript-eslint/comma-spacing`](/rules/comma-spacing) | [`@stylistic/comma-spacing`](https://eslint.style/rules/ts/comma-spacing) |
49+
| [`@typescript-eslint/func-call-spacing`](/rules/func-call-spacing) | [`@stylistic/func-call-spacing`](https://eslint.style/rules/ts/func-call-spacing) |
50+
| [`@typescript-eslint/indent`](/rules/indent) | [`@stylistic/indent`](https://eslint.style/rules/ts/indent) |
51+
| [`@typescript-eslint/key-spacing`](/rules/key-spacing) | [`@stylistic/key-spacing`](https://eslint.style/rules/ts/key-spacing) |
52+
| [`@typescript-eslint/keyword-spacing`](/rules/keyword-spacing) | [`@stylistic/keyword-spacing`](https://eslint.style/rules/ts/keyword-spacing) |
53+
| [`@typescript-eslint/lines-around-comment`](/rules/lines-around-comment) | [`@stylistic/lines-around-comment`](https://eslint.style/rules/ts/lines-around-comment) |
54+
| [`@typescript-eslint/lines-between-class-members`](/rules/lines-between-class-members) | [`@stylistic/lines-between-class-members`](https://eslint.style/rules/ts/lines-between-class-members) |
55+
| [`@typescript-eslint/member-delimiter-style`](/rules/member-delimiter-style) | [`@stylistic/member-delimiter-style`](https://eslint.style/rules/ts/member-delimiter-style) |
56+
| [`@typescript-eslint/no-extra-parens`](/rules/no-extra-parens) | [`@stylistic/no-extra-parens`](https://eslint.style/rules/ts/no-extra-parens) |
57+
| [`@typescript-eslint/no-extra-semi`](/rules/no-extra-semi) | [`@stylistic/no-extra-semi`](https://eslint.style/rules/ts/no-extra-semi) |
58+
| [`@typescript-eslint/padding-line-between-statements`](/rules/padding-line-between-statements) | [`@stylistic/padding-line-between-statements`](https://eslint.style/rules/ts/padding-line-between-statements) |
59+
| [`@typescript-eslint/quotes`](/rules/quotes) | [`@stylistic/quotes`](https://eslint.style/rules/ts/quotes) |
60+
| [`@typescript-eslint/semi`](/rules/semi) | [`@stylistic/semi`](https://eslint.style/rules/ts/semi) |
61+
| [`@typescript-eslint/space-before-blocks`](/rules/space-before-blocks) | [`@stylistic/space-before-blocks`](https://eslint.style/rules/ts/space-before-blocks) |
62+
| [`@typescript-eslint/space-before-function-paren`](/rules/space-before-function-paren) | [`@stylistic/space-before-function-paren`](https://eslint.style/rules/ts/space-before-function-paren) |
63+
| [`@typescript-eslint/space-infix-ops`](/rules/space-infix-ops) | [`@stylistic/space-infix-ops`](https://eslint.style/rules/ts/space-infix-ops) |
64+
| [`@typescript-eslint/type-annotation-spacing`](/rules/type-annotation-spacing) | [`@stylistic/type-annotation-spacing`](https://eslint.style/rules/ts/type-annotation-spacing) |
65+
66+
## Supporting typescript-eslint
67+
68+
If you enjoyed this blog post and/or use typescript-eslint, please consider [supporting us on Open Collective](https://opencollective.com/typescript-eslint).
69+
We're a small volunteer team and could use your support to make the ESLint experience on TypeScript great.
70+
Thanks! 💖

Diff for: packages/website/plugins/generated-rule-docs/insertions/insertFormattingNotice.ts

+6-9
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,16 @@ import type * as unist from 'unist';
33
import type { RuleDocsPage } from '../RuleDocsPage';
44

55
export function insertFormattingNotice(page: RuleDocsPage): void {
6-
if (page.rule.meta.type !== 'layout') {
6+
const replacement = page.rule.meta.replacedBy?.find(e =>
7+
e.startsWith('@stylistic/'),
8+
);
9+
if (!replacement) {
710
return;
811
}
912

10-
const replacement = page.rule.meta.replacedBy!.find(e =>
11-
e.startsWith('@stylistic/'),
12-
);
1313
const url =
1414
replacement &&
15-
`https://eslint.style/rules/default/${replacement.replace(
16-
'@stylistic/',
17-
'',
18-
)}`;
15+
`https://eslint.style/rules/ts/${replacement.replace('@stylistic/', '')}`;
1916

2017
page.spliceChildren(0, 0, {
2118
value: `
@@ -26,7 +23,7 @@ Formatting rules now live in <a href="https://eslint.style">eslint-stylistic</a>
2623
: ''
2724
}
2825
<br />
29-
See <a href="/linting/troubleshooting/formatting">What About Formatting?</a> for more information.
26+
See <a href="/blog/deprecating-formatting-rules">Deprecating Formatting Rules</a> for more information.
3027
</admonition>
3128
`,
3229
type: 'jsx',

0 commit comments

Comments
 (0)