generated from Experience-Monks/nextjs-boilerplate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.eslintrc.json
107 lines (107 loc) · 2.96 KB
/
.eslintrc.json
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
{
"extends": [
"react-app",
"next/core-web-vitals",
"plugin:@next/next/recommended",
"plugin:import/typescript",
"prettier",
"plugin:prettier/recommended",
"plugin:sonarjs/recommended"
],
"plugins": ["jam3", "simple-import-sort", "sonarjs", "promise"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module",
"ecmaFeatures": {
"jsx": true,
"generators": true,
"experimentalObjectRestSpread": true
}
},
"settings": {
"react": {
"version": "detect"
},
"import/resolver": {
"alias": {
"map": [["@", "./src"]]
}
}
},
"rules": {
"import/no-webpack-loader-syntax": "off",
"import/no-anonymous-default-export": "off",
"import/no-unresolved": ["error", { "ignore": ["svg-inline-loader"] }],
"import/named": "error",
"import/default": "error",
"import/first": "error",
"import/order": ["error", { "groups": ["builtin", "external", ["parent", "sibling", "index"]] }],
"import/no-extraneous-dependencies": [
"warn",
{ "devDependencies": true, "optionalDependencies": true, "peerDependencies": false }
],
"simple-import-sort/exports": "warn",
"simple-import-sort/imports": [
"warn",
{
"groups": [
["^react", "^next", "^@jam3", "^@?\\w", "^\\u0000"], // our stack & ext library & side effect
["^.+\\.scss$", "^@/styles/.+\\.scss$"], // css & scss
["^@/data"], // data
["^@/pages", "^@/components"], // components
["^@/services", "^@/hooks", "^@/utils"], // utils
["^@/redux"], // redux
["^@/components/svgs", "^@/data", "^@/assets"], // data
["^@/"], // other basePaths
["^"] // rest
]
}
],
"curly": [2, "multi-line", "consistent"],
"no-var": "error",
"prettier/prettier": "warn",
"promise/param-names": "error",
"promise/no-return-wrap": "error",
"jsx-a11y/href-no-hash": "off",
"jam3/no-sanitizer-with-danger": [
2,
{
"wrapperName": ["sanitizer"]
}
],
"jam3/forbid-methods": 2,
"no-console": "off",
"jsx-a11y/anchor-is-valid": [
"error",
{
"components": ["Link"],
"specialLink": ["hrefLeft", "hrefRight"],
"aspects": ["invalidHref", "preferButton"]
}
],
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "error",
"@next/next/no-img-element": "off",
"@typescript-eslint/no-explicit-any": ["error"]
},
"overrides": [
{
"files": ["src/util/**/*.js"],
"rules": {
"require-jsdoc": [
"error",
{
"require": {
"FunctionDeclaration": true,
"ClassDeclaration": true,
"MethodDefinition": false,
"ArrowFunctionExpression": false,
"FunctionExpression": false
}
}
]
}
}
]
}