Skip to content

Commit c6af273

Browse files
committedFeb 19, 2024
feat!: upgrade typescript-eslint v7
1 parent 276e7f1 commit c6af273

File tree

5 files changed

+74
-73
lines changed

5 files changed

+74
-73
lines changed
 

‎package.json

+3-4
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,9 @@
3535
"prepublishOnly": "pnpm run build"
3636
},
3737
"peerDependencies": {
38-
"eslint": "^8.0.0"
38+
"eslint": "^8.56.0"
3939
},
4040
"dependencies": {
41-
"@typescript-eslint/eslint-plugin": "^7.0.1",
42-
"@typescript-eslint/parser": "^7.0.1",
4341
"@unocss/eslint-plugin": "^0.58.5",
4442
"eslint-config-prettier": "^9.1.0",
4543
"eslint-define-config": "^1.24.1",
@@ -58,6 +56,7 @@
5856
"jsonc-eslint-parser": "^2.4.0",
5957
"local-pkg": "^0.5.0",
6058
"prettier": "^3.2.5",
59+
"typescript-eslint": "^7.0.1",
6160
"vue-eslint-parser": "^9.4.2",
6261
"yaml-eslint-parser": "^1.2.2"
6362
},
@@ -71,7 +70,7 @@
7170
"typescript": "^5.3.3"
7271
},
7372
"engines": {
74-
"node": ">=16.14.0"
73+
"node": "^18.18.0 || >=20.0.0"
7574
},
7675
"prettier": "@sxzz/prettier-config"
7776
}

‎pnpm-lock.yaml

+23-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎src/configs/typescript.ts

+42-45
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,56 @@
11
import { GLOB_JS, GLOB_TS, GLOB_TSX } from '../globs'
2-
import { parserTypeScript, pluginAntfu, pluginTypeScript } from '../plugins'
2+
import { tseslint } from '../plugins'
33
import { restrictedSyntaxJs } from './javascript'
4-
import type { FlatESLintConfigItem } from 'eslint-define-config'
4+
import type { FlatESLintConfigItem, Rules } from 'eslint-define-config'
5+
6+
export const typescriptRules: Rules = {
7+
'@typescript-eslint/ban-ts-comment': 'off',
8+
'@typescript-eslint/ban-types': 'off',
9+
'@typescript-eslint/consistent-type-assertions': [
10+
'error',
11+
{
12+
assertionStyle: 'as',
13+
objectLiteralTypeAssertions: 'allow-as-parameter',
14+
},
15+
],
16+
'@typescript-eslint/consistent-type-imports': [
17+
'error',
18+
{ disallowTypeAnnotations: false, fixStyle: 'inline-type-imports' },
19+
],
20+
'@typescript-eslint/no-explicit-any': 'off',
21+
'@typescript-eslint/no-import-type-side-effects': 'error',
22+
'@typescript-eslint/no-non-null-assertion': 'off',
23+
'@typescript-eslint/no-redeclare': 'error',
24+
25+
// handled by unused-imports/no-unused-imports
26+
'@typescript-eslint/no-unused-vars': 'off',
27+
28+
'@typescript-eslint/prefer-as-const': 'warn',
29+
'@typescript-eslint/prefer-literal-enum-member': [
30+
'error',
31+
{ allowBitwiseExpressions: true },
32+
],
33+
34+
'no-restricted-syntax': [
35+
'error',
36+
...restrictedSyntaxJs,
37+
'TSEnumDeclaration[const=true]',
38+
],
39+
}
540

641
export const typescript: FlatESLintConfigItem[] = [
7-
{
42+
...(tseslint.config({
43+
extends: [...tseslint.configs.recommended],
844
files: [GLOB_TS, GLOB_TSX],
945
languageOptions: {
10-
parser: parserTypeScript,
46+
parser: tseslint.parser,
1147
parserOptions: {
1248
sourceType: 'module',
1349
},
1450
},
15-
plugins: {
16-
'@typescript-eslint': pluginTypeScript,
17-
antfu: pluginAntfu,
18-
},
19-
rules: {
20-
...pluginTypeScript.configs['eslint-recommended'].overrides![0].rules,
21-
...pluginTypeScript.configs.strict.rules,
22-
23-
'@typescript-eslint/ban-ts-comment': 'off',
24-
'@typescript-eslint/ban-types': 'off',
25-
'@typescript-eslint/consistent-type-assertions': [
26-
'error',
27-
{
28-
assertionStyle: 'as',
29-
objectLiteralTypeAssertions: 'allow-as-parameter',
30-
},
31-
],
32-
'@typescript-eslint/consistent-type-imports': [
33-
'error',
34-
{ disallowTypeAnnotations: false, fixStyle: 'inline-type-imports' },
35-
],
36-
'@typescript-eslint/no-explicit-any': 'off',
37-
'@typescript-eslint/no-import-type-side-effects': 'error',
38-
'@typescript-eslint/no-non-null-assertion': 'off',
39-
'@typescript-eslint/no-redeclare': 'error',
40-
41-
// handled by unused-imports/no-unused-imports
42-
'@typescript-eslint/no-unused-vars': 'off',
51+
rules: typescriptRules,
52+
}) as FlatESLintConfigItem[]),
4353

44-
'@typescript-eslint/prefer-as-const': 'warn',
45-
'@typescript-eslint/prefer-literal-enum-member': [
46-
'error',
47-
{ allowBitwiseExpressions: true },
48-
],
49-
50-
'no-restricted-syntax': [
51-
'error',
52-
...restrictedSyntaxJs,
53-
'TSEnumDeclaration[const=true]',
54-
],
55-
},
56-
},
5754
{
5855
files: ['**/*.d.ts'],
5956
rules: {

‎src/configs/vue.ts

+4-12
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import { getPackageInfoSync } from 'local-pkg'
2-
import tsPlugin from '@typescript-eslint/eslint-plugin'
32
import { GLOB_VUE } from '../globs'
4-
import { parserVue, pluginVue } from '../plugins'
5-
import { typescript } from './typescript'
3+
import { parserVue, pluginVue, tseslint } from '../plugins'
4+
import { typescriptRules } from './typescript'
65
import type { FlatESLintConfigItem, Rules } from 'eslint-define-config'
76

87
export function getVueVersion() {
@@ -110,19 +109,12 @@ export const vue: FlatESLintConfigItem[] = [
110109
},
111110
},
112111
plugins: {
113-
'@typescript-eslint': tsPlugin,
112+
'@typescript-eslint': tseslint.plugin,
114113
vue: pluginVue,
115114
},
116115
processor: pluginVue.processors['.vue'],
117116
rules: {
118-
...typescript[0].rules,
119-
},
120-
},
121-
{
122-
plugins: {
123-
vue: pluginVue,
124-
},
125-
rules: {
117+
...typescriptRules,
126118
...(isVue3 ? vue3Rules : vue2Rules),
127119
...vueCustomRules,
128120
},

‎src/plugins.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ export const pluginComments = interopDefault(_pluginComments)
1919
import * as _pluginMarkdown from 'eslint-plugin-markdown'
2020
export const pluginMarkdown = interopDefault(_pluginMarkdown)
2121

22-
import * as _pluginTypeScript from '@typescript-eslint/eslint-plugin'
23-
export const pluginTypeScript = interopDefault(_pluginTypeScript)
22+
import tseslint from 'typescript-eslint'
23+
export { tseslint }
2424

2525
// @ts-expect-error missing types
2626
import * as _pluginUnicorn from 'eslint-plugin-unicorn'
@@ -51,7 +51,6 @@ export * as pluginYml from 'eslint-plugin-yml'
5151
// @ts-expect-error missing types
5252
export * as pluginSortKeys from 'eslint-plugin-sort-keys'
5353

54-
export * as parserTypeScript from '@typescript-eslint/parser'
5554
export * as parserVue from 'vue-eslint-parser'
5655
export * as parserYml from 'yaml-eslint-parser'
5756
export * as parserJsonc from 'jsonc-eslint-parser'

0 commit comments

Comments
 (0)
Please sign in to comment.