-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.eslintrc.cjs
107 lines (100 loc) · 2.19 KB
/
.eslintrc.cjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
const shadcnDirs = ["ui", "magicui", "mixcnui", "animata", "roadmap-ui"];
const shadcnImportPatterns = shadcnDirs.map(
(dir) => `^@/components/${dir}/.+$`,
);
/** @type {import('eslint').Linter.Config} */
module.exports = {
extends: [
"next/core-web-vitals",
"plugin:prettier/recommended",
"plugin:tailwindcss/recommended",
],
plugins: ["perfectionist", "tailwindcss"],
rules: {
"perfectionist/sort-imports": [
"error",
{
type: "alphabetical",
order: "desc",
groups: [
["builtin", "react", "next", "lodash"],
"unknown",
"shadcn",
["internal-type", "internal"],
[
"parent-type",
"parent",
"sibling-type",
"sibling",
"index-type",
"index",
],
"object",
"css",
],
customGroups: {
value: {
react: ["^react(-dom)?$"],
next: ["^@?next/?"],
css: "\\.css$",
lodash: ["lodash*"],
shadcn: shadcnImportPatterns,
},
type: {
react: ["react", "react-dom"],
next: ["next"],
},
},
internalPattern: ["^@/.+$"],
},
],
"perfectionist/sort-named-imports": [
"error",
{
type: "line-length",
order: "desc",
groupKind: "types-first",
},
],
"perfectionist/sort-jsx-props": [
"error",
{
groups: [
"key",
"id",
"value",
"src",
"className",
"multiline",
"unknown",
"callback",
"shorthand",
"render",
],
customGroups: {
key: "key",
id: "id",
render: "render",
value: "value",
src: "src",
className: "className*",
callback: "on*",
},
},
],
"perfectionist/sort-named-exports": [
"error",
{
type: "line-length",
order: "desc",
},
],
"perfectionist/sort-exports": [
"error",
{
type: "line-length",
order: "desc",
},
],
},
};