forked from Skyscanner/backpack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.eslintrc
145 lines (145 loc) · 3.33 KB
/
.eslintrc
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
{
"extends": [
"@skyscanner/eslint-config-skyscanner"
],
"env": {
"browser": true,
"jest": true
},
"settings": {
"import/resolver": {
"node": {
"extensions": [
".js",
".jsx",
".ts",
".tsx",
".json",
".android.js",
".ios.js"
]
}
}
},
"rules": {
// Temp adding this whilst migrating to the latest eslint & TS migration
// Activate this when we run the migration scripts
// "padding-line-between-statements": [
// "error",
// {
// "blankLine": "always",
// "prev": "*",
// "next": [
// "block",
// "block-like",
// "cjs-export",
// "class",
// "export",
// "import",
// "let",
// "var"
// ]
// },
// {
// "blankLine": "always",
// "prev": [
// "block",
// "block-like",
// "cjs-export",
// "class",
// "multiline-const",
// "export",
// "import",
// "let",
// "var"
// ],
// "next": "*"
// },
// {
// "blankLine": "never",
// "prev": [
// "singleline-const"
// ],
// "next": [
// "singleline-const"
// ]
// },
// {
// "blankLine": "any",
// "prev": [
// "cjs-import",
// "cjs-export",
// "export",
// "import"
// ],
// "next": [
// "cjs-import",
// "cjs-export",
// "export",
// "import",
// "singleline-const"
// ]
// }
// ],
"backpack/use-components": "off",
"prettier/prettier": "error",
"react/jsx-filename-extension": "off",
"import/no-extraneous-dependencies": "off",
// We override the eslint-config-skyscanner rule here as within Backpack
// we need certain order imports otherwise it will break components like the calendar.
"import/order": [
"error",
{
"groups": [
"builtin",
"external",
"parent",
"sibling",
"index"
],
"newlines-between": "always"
}
],
// This is superceded by jsx-a11y/label-has-associated-control
"jsx-a11y/label-has-for": "off",
// We want to keep prop-types alongside typescript types so we relax this rule to allow us to specify defaults for
// required typescript props
"react/default-props-match-prop-types": [
"error",
{
"allowRequiredDefaults": true
}
],
"react/require-default-props": [
"error",
{
"forbidDefaultForRequired": false
}
],
"react/prefer-stateless-function": [
"error",
{
"ignorePureComponents": true
}
],
"react/sort-comp": [
"error",
{
"order": [
"type-annotations",
"static-methods",
"lifecycle",
"/^on.+$/",
"getters",
"setters",
"/^(get|set)(?!(InitialState$|DefaultProps$|ChildContext$)).+$/",
"everything-else",
"/^render.+$/",
"render"
]
}
],
// Temp setting this to warn whilst migration to TS is in progress.
"no-undef": "warn"
}
}