@flarian/frontend-preset 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/eslint/base.mjs +14 -0
- package/eslint/import-sort.mjs +4 -0
- package/eslint/index.mjs +4 -5
- package/eslint/json.mjs +13 -0
- package/eslint/jsx.mjs +4 -0
- package/eslint/rules/import-sort.mjs +32 -0
- package/eslint/rules/javascript.mjs +53 -0
- package/eslint/rules/json.mjs +27 -0
- package/eslint/rules/json.package.mjs +51 -0
- package/eslint/rules/json.tsconfig.mjs +56 -0
- package/eslint/rules/jsx.mjs +173 -0
- package/eslint/rules/stylistic.mjs +547 -0
- package/package.json +34 -20
- package/prettier/index.mjs +1 -1
- package/stylelint/index.mjs +2 -2
package/eslint/base.mjs
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import jsPlugin from '@eslint/js';
|
|
2
|
+
|
|
3
|
+
import esLintJavaScriptRules from './rules/javascript.mjs';
|
|
4
|
+
import esLintStylisticRules from './rules/stylistic.mjs';
|
|
5
|
+
|
|
6
|
+
/** @type {import('eslint').Linter.Config[]} */
|
|
7
|
+
export default [
|
|
8
|
+
{
|
|
9
|
+
files: ['**/*.{js,ts,jsx,tsx,cjs,mjs}'],
|
|
10
|
+
},
|
|
11
|
+
jsPlugin.configs.recommended,
|
|
12
|
+
esLintJavaScriptRules,
|
|
13
|
+
esLintStylisticRules,
|
|
14
|
+
];
|
package/eslint/index.mjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export default
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
];
|
|
1
|
+
export { default as baseRules } from './base.mjs';
|
|
2
|
+
export { default as importSortRules } from './import-sort.mjs';
|
|
3
|
+
export { default as jsxRules } from './jsx.mjs';
|
|
4
|
+
export { default as jsonRules } from './json.mjs';
|
package/eslint/json.mjs
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import pluginJsonc from 'eslint-plugin-jsonc';
|
|
2
|
+
|
|
3
|
+
import esLintJsonRules from './rules/json.mjs';
|
|
4
|
+
import esLintJsonPackageRules from './rules/json.package.mjs';
|
|
5
|
+
import esLintJsonTsconfigRules from './rules/json.tsconfig.mjs';
|
|
6
|
+
|
|
7
|
+
/** @type {import('eslint').Linter.Config[]} */
|
|
8
|
+
export default [
|
|
9
|
+
...pluginJsonc.configs['flat/all'],
|
|
10
|
+
esLintJsonRules,
|
|
11
|
+
esLintJsonPackageRules,
|
|
12
|
+
esLintJsonTsconfigRules,
|
|
13
|
+
];
|
package/eslint/jsx.mjs
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import simpleImportSort from 'eslint-plugin-simple-import-sort';
|
|
2
|
+
|
|
3
|
+
/** @type {import('eslint').Linter.Config} */
|
|
4
|
+
export default {
|
|
5
|
+
plugins: { '@simple-import-sort': simpleImportSort },
|
|
6
|
+
rules: {
|
|
7
|
+
'@simple-import-sort/imports': [
|
|
8
|
+
'warn',
|
|
9
|
+
{
|
|
10
|
+
groups: [
|
|
11
|
+
['^', '^@'],
|
|
12
|
+
|
|
13
|
+
['^\\./'],
|
|
14
|
+
|
|
15
|
+
['^.+\\.(.(js|ts))$'],
|
|
16
|
+
|
|
17
|
+
['^~'],
|
|
18
|
+
|
|
19
|
+
['^.+\\.(.(vue|jsx|tsx))$'],
|
|
20
|
+
|
|
21
|
+
['^~/types'],
|
|
22
|
+
|
|
23
|
+
['^.+\\.(module.(less|sass|scss|css))$'],
|
|
24
|
+
|
|
25
|
+
['^.+\\.(gif|png|svg|jpg)$'],
|
|
26
|
+
|
|
27
|
+
['^\\u0000'],
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/** @type {import('eslint').Linter.Config} */
|
|
2
|
+
export default {
|
|
3
|
+
rules: {
|
|
4
|
+
'arrow-body-style': ['error', 'as-needed'],
|
|
5
|
+
curly: 'error',
|
|
6
|
+
'func-names': ['error', 'always'],
|
|
7
|
+
'no-alert': 'error',
|
|
8
|
+
'no-console': 'error',
|
|
9
|
+
'no-var': 'error',
|
|
10
|
+
'no-duplicate-imports': [
|
|
11
|
+
'error',
|
|
12
|
+
{
|
|
13
|
+
includeExports: true,
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
'no-magic-numbers': [
|
|
17
|
+
'error',
|
|
18
|
+
{
|
|
19
|
+
ignore: [-1, 0, 1],
|
|
20
|
+
ignoreArrayIndexes: true,
|
|
21
|
+
ignoreDefaultValues: true,
|
|
22
|
+
enforceConst: true,
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
'no-plusplus': [
|
|
26
|
+
'error',
|
|
27
|
+
{
|
|
28
|
+
allowForLoopAfterthoughts: true,
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
'no-restricted-syntax': [
|
|
32
|
+
'error',
|
|
33
|
+
{
|
|
34
|
+
selector: 'ForInStatement',
|
|
35
|
+
message: 'for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
selector: 'LabeledStatement',
|
|
39
|
+
message: 'Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
selector: 'WithStatement',
|
|
43
|
+
message: '`with` is disallowed in strict mode because it makes code impossible to predict and optimize.',
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
'no-unused-expressions': [
|
|
47
|
+
'error',
|
|
48
|
+
{
|
|
49
|
+
allowShortCircuit: true,
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import pluginJsonc from 'eslint-plugin-jsonc';
|
|
2
|
+
|
|
3
|
+
/** @type {import('eslint').Linter.Config} */
|
|
4
|
+
export default {
|
|
5
|
+
files: ['**/*.json'],
|
|
6
|
+
plugins: { pluginJsonc },
|
|
7
|
+
rules: {
|
|
8
|
+
'jsonc/indent': ['warn', 'tab'], // Используем табуляцию
|
|
9
|
+
'jsonc/no-comments': 'off', // Разрешаем комментарии
|
|
10
|
+
'jsonc/comma-dangle': ['error', 'never'], // Запрет висячих запятых
|
|
11
|
+
'jsonc/key-name-casing': [
|
|
12
|
+
'error',
|
|
13
|
+
{
|
|
14
|
+
camelCase: false,
|
|
15
|
+
PascalCase: false,
|
|
16
|
+
SCREAMING_SNAKE_CASE: false,
|
|
17
|
+
'kebab-case': false,
|
|
18
|
+
snake_case: false,
|
|
19
|
+
ignores: [],
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
'jsonc/object-curly-spacing': ['warn', 'always'],
|
|
23
|
+
'jsonc/array-element-newline': ['error', 'consistent'],
|
|
24
|
+
'jsonc/array-bracket-newline': ['warn', 'consistent'],
|
|
25
|
+
'jsonc/sort-keys': ['warn', 'asc', { caseSensitive: true, natural: false, minKeys: 10 }],
|
|
26
|
+
},
|
|
27
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import pluginJsonc from 'eslint-plugin-jsonc';
|
|
2
|
+
|
|
3
|
+
/** @type {import('eslint').Linter.Config} */
|
|
4
|
+
export default {
|
|
5
|
+
files: ['**/package.json'],
|
|
6
|
+
plugins: { pluginJsonc },
|
|
7
|
+
rules: {
|
|
8
|
+
'jsonc/sort-keys': [
|
|
9
|
+
'warn',
|
|
10
|
+
{
|
|
11
|
+
pathPattern: '^$',
|
|
12
|
+
order: [
|
|
13
|
+
'name',
|
|
14
|
+
'version',
|
|
15
|
+
'license',
|
|
16
|
+
'author',
|
|
17
|
+
'keywords',
|
|
18
|
+
'homepage',
|
|
19
|
+
'repository',
|
|
20
|
+
'contributors',
|
|
21
|
+
'funding',
|
|
22
|
+
'private',
|
|
23
|
+
'publishConfig',
|
|
24
|
+
'type',
|
|
25
|
+
'files',
|
|
26
|
+
'scripts',
|
|
27
|
+
'dependencies',
|
|
28
|
+
'devDependencies',
|
|
29
|
+
'peerDependencies',
|
|
30
|
+
'optionalDependencies',
|
|
31
|
+
'bundledDependencies',
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
pathPattern: '^(?:dev|peer|optional|bundled)?[Dd]ependencies$',
|
|
36
|
+
order: ['type', 'name'],
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
pathPattern: '^scripts$',
|
|
40
|
+
order: [
|
|
41
|
+
'build',
|
|
42
|
+
'test',
|
|
43
|
+
'lint',
|
|
44
|
+
'start',
|
|
45
|
+
'prebuild',
|
|
46
|
+
'pretest',
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import pluginJsonc from 'eslint-plugin-jsonc';
|
|
2
|
+
|
|
3
|
+
/** @type {import('eslint').Linter.Config} */
|
|
4
|
+
export default {
|
|
5
|
+
files: ['**/tsconfig*.json'],
|
|
6
|
+
plugins: { pluginJsonc },
|
|
7
|
+
rules: {
|
|
8
|
+
'jsonc/sort-keys': [
|
|
9
|
+
'warn',
|
|
10
|
+
{
|
|
11
|
+
pathPattern: '^$',
|
|
12
|
+
order: [
|
|
13
|
+
'compilerOptions',
|
|
14
|
+
'extends',
|
|
15
|
+
'include',
|
|
16
|
+
'exclude',
|
|
17
|
+
'files',
|
|
18
|
+
'references',
|
|
19
|
+
],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
pathPattern: '^compilerOptions$',
|
|
23
|
+
order: [
|
|
24
|
+
'target',
|
|
25
|
+
'lib',
|
|
26
|
+
'module',
|
|
27
|
+
'moduleResolution',
|
|
28
|
+
'esModuleInterop',
|
|
29
|
+
'skipLibCheck',
|
|
30
|
+
'forceConsistentCasingInFileNames',
|
|
31
|
+
'strict',
|
|
32
|
+
'noUnusedLocals',
|
|
33
|
+
'noUnusedParameters',
|
|
34
|
+
'noFallthroughCasesInSwitch',
|
|
35
|
+
'noUncheckedSideEffectImports',
|
|
36
|
+
'allowJs',
|
|
37
|
+
'checkJs',
|
|
38
|
+
'jsx',
|
|
39
|
+
'resolveJsonModule',
|
|
40
|
+
'isolatedModules',
|
|
41
|
+
'noEmit',
|
|
42
|
+
'outDir',
|
|
43
|
+
'baseUrl',
|
|
44
|
+
'paths',
|
|
45
|
+
'typeRoots',
|
|
46
|
+
'types',
|
|
47
|
+
'plugins',
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
pathPattern: '^references$',
|
|
52
|
+
order: ['path'],
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
};
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import stylisticJs from '@stylistic/eslint-plugin';
|
|
2
|
+
|
|
3
|
+
/** @type {import('eslint').Linter.Config} */
|
|
4
|
+
export default {
|
|
5
|
+
plugins: { '@stylistic': stylisticJs },
|
|
6
|
+
rules: {
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Принудительное или запретительное использование пробелов внутри фигурных скобок в атрибутах и выражениях JSX
|
|
10
|
+
* https://eslint.style/rules/default/jsx-child-element-spacing
|
|
11
|
+
*/
|
|
12
|
+
'@stylistic/jsx-child-element-spacing': ['warn'],
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Обеспечить размещение закрывающей скобки в JSX
|
|
16
|
+
* https://eslint.style/rules/default/jsx-closing-bracket-location
|
|
17
|
+
*/
|
|
18
|
+
'@stylistic/jsx-closing-bracket-location': ['warn', 'tag-aligned'],
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Обеспечить расположение закрывающего тега для многострочного JSX
|
|
22
|
+
* https://eslint.style/rules/default/jsx-closing-tag-location
|
|
23
|
+
*/
|
|
24
|
+
'@stylistic/jsx-closing-tag-location': ['warn', 'tag-aligned'],
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Запрещает ненужные выражения JSX, когда достаточно одних литералов, или применяет выражения JSX к литералам в дочерних элементах JSX или атрибутах
|
|
28
|
+
* https://eslint.style/rules/default/jsx-curly-brace-presence
|
|
29
|
+
*/
|
|
30
|
+
'@stylistic/jsx-curly-brace-presence': ['warn', { props: 'never', children: 'never', propElementValues: 'always' }],
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Обеспечить единообразие переносов строк в фигурных скобках в атрибутах и выражениях JSX
|
|
34
|
+
* https://eslint.style/rules/default/jsx-curly-newline
|
|
35
|
+
*/
|
|
36
|
+
'@stylistic/jsx-curly-newline': ['warn', { multiline: 'consistent', singleline: 'consistent' }],
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Принудительное или запретительное использование пробелов внутри фигурных скобок в атрибутах и выражениях JSX
|
|
40
|
+
* https://eslint.style/rules/default/jsx-curly-spacing
|
|
41
|
+
*/
|
|
42
|
+
'@stylistic/jsx-curly-spacing': ['warn', { when: 'always', attributes: { allowMultiline: false }, children: true }],
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Принудительное или запретительное использование пробелов вокруг знаков равенства в атрибутах JSX
|
|
46
|
+
* https://eslint.style/rules/default/jsx-equals-spacing
|
|
47
|
+
*/
|
|
48
|
+
'@stylistic/jsx-equals-spacing': ['warn', 'always'],
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Обеспечить правильное положение первого свойства в JSX
|
|
52
|
+
* https://eslint.style/rules/default/jsx-first-prop-new-line
|
|
53
|
+
*/
|
|
54
|
+
'@stylistic/jsx-first-prop-new-line': ['warn', 'multiline'],
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Принудительно вставляйте переносы строк до и после элементов JSX, когда они используются в качестве аргументов функции.
|
|
58
|
+
* https://eslint.style/rules/default/jsx-function-call-newline
|
|
59
|
+
*/
|
|
60
|
+
'@stylistic/jsx-function-call-newline': ['warn', 'multiline'],
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Принудительно применять отступ JSX. Устарело, вместо этого используйте правило `indent`.
|
|
64
|
+
* https://eslint.style/rules/default/jsx-indent
|
|
65
|
+
*/
|
|
66
|
+
'@stylistic/jsx-indent': ['warn', 'tab', { checkAttributes: true, indentLogicalExpressions: true }],
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Обеспечить отступы свойств в JSX
|
|
70
|
+
* https://eslint.style/rules/default/jsx-indent-props
|
|
71
|
+
*/
|
|
72
|
+
'@stylistic/jsx-indent-props': ['warn', 'tab'],
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Обеспечить максимальное количество реквизитов в одной строке в JSX
|
|
76
|
+
* https://eslint.style/rules/default/jsx-max-props-per-line
|
|
77
|
+
*/
|
|
78
|
+
'@stylistic/jsx-max-props-per-line': ['warn', { maximum: { single: 3, multi: 1 } }],
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Требовать или запрещать новую строку после элементов и выражений jsx.
|
|
82
|
+
* https://eslint.style/rules/default/jsx-newline
|
|
83
|
+
*/
|
|
84
|
+
'@stylistic/jsx-newline': ['warn', { prevent: false }],
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Требуется один элемент JSX на строку
|
|
88
|
+
* https://eslint.style/rules/default/jsx-one-expression-per-line
|
|
89
|
+
*/
|
|
90
|
+
'@stylistic/jsx-one-expression-per-line': ['warn'],
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Применять PascalCase для определяемых пользователем компонентов JSX
|
|
94
|
+
* https://eslint.style/rules/default/jsx-pascal-case
|
|
95
|
+
*/
|
|
96
|
+
'@stylistic/jsx-pascal-case': [
|
|
97
|
+
'warn',
|
|
98
|
+
{
|
|
99
|
+
allowAllCaps: false,
|
|
100
|
+
allowNamespace: true,
|
|
101
|
+
allowLeadingUnderscore: false,
|
|
102
|
+
ignore: [],
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Запретить множественные пробелы между встроенными свойствами JSX
|
|
108
|
+
* https://eslint.style/rules/default/jsx-props-no-multi-spaces
|
|
109
|
+
*/
|
|
110
|
+
'@stylistic/jsx-props-no-multi-spaces': ['warn'],
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Обеспечить последовательное использование двойных или одинарных кавычек в атрибутах JSX
|
|
114
|
+
* https://eslint.style/rules/default/jsx-quotes
|
|
115
|
+
*/
|
|
116
|
+
'@stylistic/jsx-quotes': ['warn', 'prefer-double'],
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Запретить дополнительные закрывающие теги для компонентов без дочерних элементов
|
|
120
|
+
* https://eslint.style/rules/default/jsx-self-closing-comp
|
|
121
|
+
*/
|
|
122
|
+
'@stylistic/jsx-self-closing-comp': ['warn', { component: true, html: true }],
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Обеспечить сортировку реквизитов в алфавитном порядке
|
|
126
|
+
* https://eslint.style/rules/default/jsx-sort-props
|
|
127
|
+
*/
|
|
128
|
+
'@stylistic/jsx-sort-props': [
|
|
129
|
+
'warn',
|
|
130
|
+
{
|
|
131
|
+
callbacksLast: true,
|
|
132
|
+
shorthandFirst: true,
|
|
133
|
+
shorthandLast: true,
|
|
134
|
+
multiline: 'first',
|
|
135
|
+
ignoreCase: true,
|
|
136
|
+
noSortAlphabetically: true,
|
|
137
|
+
reservedFirst: true,
|
|
138
|
+
locale: 'auto',
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Обеспечить наличие пробелов внутри и вокруг открывающих и закрывающих скобок JSX
|
|
144
|
+
* https://eslint.style/rules/default/jsx-tag-spacing
|
|
145
|
+
*/
|
|
146
|
+
'@stylistic/jsx-tag-spacing': [
|
|
147
|
+
'warn',
|
|
148
|
+
{
|
|
149
|
+
closingSlash: 'never',
|
|
150
|
+
beforeSelfClosing: 'always',
|
|
151
|
+
afterOpening: 'never',
|
|
152
|
+
beforeClosing: 'never',
|
|
153
|
+
},
|
|
154
|
+
],
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Запретить отсутствующие скобки вокруг многострочного JSX
|
|
158
|
+
* https://eslint.style/rules/default/jsx-wrap-multilines
|
|
159
|
+
*/
|
|
160
|
+
'@stylistic/jsx-wrap-multilines': [
|
|
161
|
+
'warn',
|
|
162
|
+
{
|
|
163
|
+
declaration: 'parens-new-line',
|
|
164
|
+
assignment: 'parens-new-line',
|
|
165
|
+
return: 'parens-new-line',
|
|
166
|
+
arrow: 'parens-new-line',
|
|
167
|
+
condition: 'parens-new-line',
|
|
168
|
+
logical: 'parens-new-line',
|
|
169
|
+
prop: 'parens-new-line',
|
|
170
|
+
},
|
|
171
|
+
],
|
|
172
|
+
},
|
|
173
|
+
};
|
|
@@ -0,0 +1,547 @@
|
|
|
1
|
+
import stylisticJs from '@stylistic/eslint-plugin';
|
|
2
|
+
|
|
3
|
+
/** @type {import('eslint').Linter.Config} */
|
|
4
|
+
export default {
|
|
5
|
+
plugins: { '@stylistic': stylisticJs },
|
|
6
|
+
rules: {
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Принудительно вводить переносы строк после открытия и перед закрытием скобок массива
|
|
10
|
+
* https://eslint.style/rules/default/array-bracket-newline
|
|
11
|
+
*/
|
|
12
|
+
'@stylistic/array-bracket-newline': ['warn', { multiline: true, minItems: 4 }],
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Обеспечить единообразие интервалов внутри скобок массива
|
|
16
|
+
* https://eslint.style/rules/default/array-bracket-spacing
|
|
17
|
+
*/
|
|
18
|
+
'@stylistic/array-bracket-spacing': ['warn', 'never'],
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Принудительно вставлять переносы строк после каждого элемента массива
|
|
22
|
+
* https://eslint.style/rules/default/array-element-newline
|
|
23
|
+
*/
|
|
24
|
+
'@stylistic/array-element-newline': ['warn', { consistent: true, multiline: true, minItems: 4 }],
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Требуйте заключения аргументов стрелочной функции в скобки
|
|
28
|
+
* https://eslint.style/rules/default/arrow-parens
|
|
29
|
+
*/
|
|
30
|
+
'@stylistic/arrow-parens': ['off'],
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Обеспечить одинаковый интервал до и после стрелки в стрелочных функциях
|
|
34
|
+
* https://eslint.style/rules/default/arrow-spacing
|
|
35
|
+
*/
|
|
36
|
+
'@stylistic/arrow-spacing': ['warn', { before: true, after: true }],
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Запрещать или принудительно вводить пробелы внутри блоков после открытия блока и перед закрытием блока
|
|
40
|
+
* https://eslint.style/rules/default/block-spacing
|
|
41
|
+
*/
|
|
42
|
+
'@stylistic/block-spacing': ['warn', 'always'],
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Обеспечить единообразный стиль крепления блоков
|
|
46
|
+
* https://eslint.style/rules/default/brace-style
|
|
47
|
+
*/
|
|
48
|
+
'@stylistic/brace-style': ['warn', '1tbs', { allowSingleLine: true }],
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Требовать или запрещать конечные запятые
|
|
52
|
+
* https://eslint.style/rules/default/comma-dangle
|
|
53
|
+
*/
|
|
54
|
+
'@stylistic/comma-dangle': [
|
|
55
|
+
'warn',
|
|
56
|
+
{
|
|
57
|
+
arrays: 'always-multiline',
|
|
58
|
+
objects: 'always-multiline',
|
|
59
|
+
imports: 'never',
|
|
60
|
+
exports: 'never',
|
|
61
|
+
functions: 'never',
|
|
62
|
+
importAttributes: 'never',
|
|
63
|
+
dynamicImports: 'never',
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Обеспечьте одинаковый интервал до и после запятых
|
|
69
|
+
* https://eslint.style/rules/default/comma-spacing
|
|
70
|
+
*/
|
|
71
|
+
'@stylistic/comma-spacing': ['warn', { before: false, after: true }],
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Обеспечить единообразие стиля запятых
|
|
75
|
+
* https://eslint.style/rules/default/comma-style
|
|
76
|
+
*/
|
|
77
|
+
'@stylistic/comma-style': ['warn', 'last'],
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Обеспечить постоянный интервал внутри вычисляемых скобок свойств
|
|
81
|
+
* https://eslint.style/rules/default/computed-property-spacing
|
|
82
|
+
*/
|
|
83
|
+
'@stylistic/computed-property-spacing': ['warn', 'never'],
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Обеспечивать единообразие переносов строк после открывающихся и перед закрывающимися фигурными скобками
|
|
87
|
+
* https://eslint.style/rules/default/curly-newline
|
|
88
|
+
*/
|
|
89
|
+
'@stylistic/curly-newline': ['warn', 'always'],
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Обеспечивать единообразие переносов строк до и после точек
|
|
93
|
+
* https://eslint.style/rules/default/dot-location
|
|
94
|
+
*/
|
|
95
|
+
'@stylistic/dot-location': ['warn', 'property'],
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Требовать или запрещать новую строку в конце файлов
|
|
99
|
+
* https://eslint.style/rules/default/eol-last
|
|
100
|
+
*/
|
|
101
|
+
'@stylistic/eol-last': ['warn', 'always'],
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Требовать или запрещать пробелы между идентификаторами функций и их вызовами
|
|
105
|
+
* https://eslint.style/rules/default/func-call-spacing
|
|
106
|
+
*/
|
|
107
|
+
'@stylistic/function-call-spacing': ['warn', 'never'],
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Обеспечить переносы строк между аргументами вызова функции
|
|
111
|
+
* https://eslint.style/rules/default/function-call-argument-newline
|
|
112
|
+
*/
|
|
113
|
+
'@stylistic/function-call-argument-newline': ['warn', 'consistent'],
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Обеспечить последовательные переносы строк внутри скобок функций
|
|
117
|
+
* https://eslint.style/rules/default/function-paren-newline
|
|
118
|
+
*/
|
|
119
|
+
'@stylistic/function-paren-newline': ['warn', 'consistent'],
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Обеспечить единообразие интервалов вокруг операторов `*` в функциях генератора
|
|
123
|
+
* https://eslint.style/rules/default/generator-star-spacing
|
|
124
|
+
*/
|
|
125
|
+
'@stylistic/generator-star-spacing': ['warn', { before: true, after: false }],
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Обеспечить расположение тел стрелочных функций
|
|
129
|
+
* https://eslint.style/rules/default/implicit-arrow-linebreak
|
|
130
|
+
*/
|
|
131
|
+
'@stylistic/implicit-arrow-linebreak': ['off'],
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Обеспечить единообразие отступов
|
|
135
|
+
* https://eslint.style/rules/default/indent
|
|
136
|
+
*/
|
|
137
|
+
'@stylistic/indent': ['warn', 'tab', { SwitchCase: 1 }],
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Отступы для бинарных операторов
|
|
141
|
+
* https://eslint.style/rules/default/indent-binary-ops
|
|
142
|
+
*/
|
|
143
|
+
'@stylistic/indent-binary-ops': ['warn', 'tab'],
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Обеспечьте соблюдение единообразных интервалов между именами свойств и аннотациями типов в типах и интерфейсах.
|
|
147
|
+
* https://eslint.style/rules/default/key-spacing
|
|
148
|
+
*/
|
|
149
|
+
'@stylistic/key-spacing': ['warn', { beforeColon: false }],
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Обеспечьте одинаковый интервал до и после ключевых слов.
|
|
153
|
+
* https://eslint.style/rules/default/keyword-spacing
|
|
154
|
+
*/
|
|
155
|
+
'@stylistic/keyword-spacing': ['warn', { before: true }],
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Обеспечить положение строчных комментариев
|
|
159
|
+
* https://eslint.style/rules/default/line-comment-position
|
|
160
|
+
*/
|
|
161
|
+
'@stylistic/line-comment-position': ['off'],
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Обеспечить единообразие стиля переноса строк
|
|
165
|
+
* https://eslint.style/rules/default/linebreak-style
|
|
166
|
+
*/
|
|
167
|
+
'@stylistic/linebreak-style': ['warn', 'unix'],
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Требовать пустые строки вокруг комментариев
|
|
171
|
+
* https://eslint.style/rules/default/lines-around-comment
|
|
172
|
+
*/
|
|
173
|
+
'@stylistic/lines-around-comment': [
|
|
174
|
+
'warn',
|
|
175
|
+
{
|
|
176
|
+
allowBlockStart: true,
|
|
177
|
+
allowObjectStart: true,
|
|
178
|
+
beforeLineComment: true,
|
|
179
|
+
afterLineComment: false,
|
|
180
|
+
},
|
|
181
|
+
],
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Требовать или запрещать пустую строку между членами класса
|
|
185
|
+
* https://eslint.style/rules/default/lines-between-class-members
|
|
186
|
+
*/
|
|
187
|
+
'@stylistic/lines-between-class-members': ['warn', 'always', { exceptAfterSingleLine: true }],
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Обеспечить максимальную длину строки
|
|
191
|
+
* https://eslint.style/rules/default/max-len
|
|
192
|
+
*/
|
|
193
|
+
'@stylistic/max-len': ['off'],
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Обеспечить максимально допустимое количество утверждений в строке
|
|
197
|
+
* https://eslint.style/rules/default/max-statements-per-line
|
|
198
|
+
*/
|
|
199
|
+
'@stylistic/max-statements-per-line': ['warn', { max: 1 }],
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Требовать определенный стиль разделителя элементов для интерфейсов и литералов типов
|
|
203
|
+
* https://eslint.style/rules/default/member-delimiter-style
|
|
204
|
+
*/
|
|
205
|
+
'@stylistic/member-delimiter-style': [
|
|
206
|
+
'warn',
|
|
207
|
+
{
|
|
208
|
+
multiline: {
|
|
209
|
+
delimiter: 'semi',
|
|
210
|
+
requireLast: true,
|
|
211
|
+
},
|
|
212
|
+
singleline: {
|
|
213
|
+
delimiter: 'semi',
|
|
214
|
+
requireLast: false,
|
|
215
|
+
},
|
|
216
|
+
|
|
217
|
+
overrides: {
|
|
218
|
+
interface: {
|
|
219
|
+
multiline: {
|
|
220
|
+
delimiter: 'semi',
|
|
221
|
+
requireLast: true,
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
],
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Применить определенный стиль для многострочных комментариев
|
|
230
|
+
* https://eslint.style/rules/default/multiline-comment-style
|
|
231
|
+
*/
|
|
232
|
+
'@stylistic/multiline-comment-style': ['warn', 'separate-lines'],
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Обеспечить наличие новых строк между операндами троичных выражений
|
|
236
|
+
* https://eslint.style/rules/default/multiline-ternary
|
|
237
|
+
*/
|
|
238
|
+
'@stylistic/multiline-ternary': ['warn', 'always-multiline'],
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Включить или отключить скобки при вызове конструктора без аргументов
|
|
242
|
+
* https://eslint.style/rules/default/new-parens
|
|
243
|
+
*/
|
|
244
|
+
'@stylistic/new-parens': ['warn', 'always'],
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Требовать новую строку после каждого вызова в цепочке методов
|
|
248
|
+
* https://eslint.style/rules/default/newline-per-chained-call
|
|
249
|
+
*/
|
|
250
|
+
'@stylistic/newline-per-chained-call': ['warn', { ignoreChainWithDepth: 4 }],
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Запретить стрелочные функции там, где их можно спутать со сравнениями
|
|
254
|
+
* https://eslint.style/rules/default/no-confusing-arrow
|
|
255
|
+
*/
|
|
256
|
+
'@stylistic/no-confusing-arrow': ['warn'],
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Запретить ненужные скобки
|
|
260
|
+
* https://eslint.style/rules/default/no-extra-parens
|
|
261
|
+
*/
|
|
262
|
+
'@stylistic/no-extra-parens': [
|
|
263
|
+
'warn',
|
|
264
|
+
'all',
|
|
265
|
+
{
|
|
266
|
+
returnAssign: false,
|
|
267
|
+
nestedBinaryExpressions: false,
|
|
268
|
+
ternaryOperandBinaryExpressions: false,
|
|
269
|
+
enforceForArrowConditionals: false,
|
|
270
|
+
},
|
|
271
|
+
],
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Запретить ненужные точки с запятой
|
|
275
|
+
* https://eslint.style/rules/default/no-extra-semi
|
|
276
|
+
*/
|
|
277
|
+
'@stylistic/no-extra-semi': ['warn'],
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Запретить начальные и конечные десятичные точки в числовых литералах
|
|
281
|
+
* https://eslint.style/rules/default/no-floating-decimal
|
|
282
|
+
*/
|
|
283
|
+
'@stylistic/no-floating-decimal': ['warn'],
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Запретить смешанные бинарные операторы
|
|
287
|
+
* https://eslint.style/rules/default/no-mixed-operators
|
|
288
|
+
*/
|
|
289
|
+
'@stylistic/no-mixed-operators': ['error'],
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Запретить смешанные пробелы и табуляции для отступов
|
|
293
|
+
* https://eslint.style/rules/default/no-mixed-spaces-and-tabs
|
|
294
|
+
*/
|
|
295
|
+
'@stylistic/no-mixed-spaces-and-tabs': ['warn', 'smart-tabs'],
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Запретить множественные пробелы
|
|
299
|
+
* https://eslint.style/rules/default/no-multi-spaces
|
|
300
|
+
*/
|
|
301
|
+
'@stylistic/no-multi-spaces': ['warn', { ignoreEOLComments: true }],
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Запретить несколько пустых строк
|
|
305
|
+
* https://eslint.style/rules/default/no-multiple-empty-lines
|
|
306
|
+
*/
|
|
307
|
+
'@stylistic/no-multiple-empty-lines': ['warn', { max: 1, maxBOF: 0, maxEOF: 0 }],
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Запретить табуляцию
|
|
311
|
+
* https://eslint.style/rules/default/no-tabs
|
|
312
|
+
*/
|
|
313
|
+
'@stylistic/no-tabs': ['off', { allowIndentationTabs: true }],
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Запретить пробелы в конце строк
|
|
317
|
+
* https://eslint.style/rules/default/no-trailing-spaces
|
|
318
|
+
*/
|
|
319
|
+
'@stylistic/no-trailing-spaces': ['warn'],
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* Запретить пробелы перед свойствами
|
|
323
|
+
* https://eslint.style/rules/default/no-whitespace-before-property
|
|
324
|
+
*/
|
|
325
|
+
'@stylistic/no-whitespace-before-property': ['warn'],
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Обеспечить размещение однострочных операторов
|
|
329
|
+
* https://eslint.style/rules/default/nonblock-statement-body-position
|
|
330
|
+
*/
|
|
331
|
+
'@stylistic/nonblock-statement-body-position': ['warn', 'beside'],
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* Обеспечивать единообразие переносов строк после открывающихся и перед закрывающимися фигурными скобками
|
|
335
|
+
* https://eslint.style/rules/default/object-curly-newline
|
|
336
|
+
*/
|
|
337
|
+
'@stylistic/object-curly-newline': [
|
|
338
|
+
'warn',
|
|
339
|
+
{
|
|
340
|
+
ObjectExpression: { multiline: true, minProperties: 4, consistent: true },
|
|
341
|
+
ObjectPattern: { multiline: true, minProperties: 4, consistent: true },
|
|
342
|
+
ImportDeclaration: { multiline: true, minProperties: 4 },
|
|
343
|
+
ExportDeclaration: { multiline: true, minProperties: 4 },
|
|
344
|
+
},
|
|
345
|
+
],
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Обеспечьте постоянный интервал внутри скобок
|
|
349
|
+
* https://eslint.style/rules/default/object-curly-spacing
|
|
350
|
+
*/
|
|
351
|
+
'@stylistic/object-curly-spacing': ['warn', 'always'],
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* Обеспечить размещение свойств объекта на отдельных строках
|
|
355
|
+
* https://eslint.style/rules/default/object-property-newline
|
|
356
|
+
*/
|
|
357
|
+
'@stylistic/object-property-newline': ['warn', { allowAllPropertiesOnSameLine: true }],
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* Требовать или запрещать переносы строк вокруг объявлений переменных
|
|
361
|
+
* https://eslint.style/rules/default/one-var-declaration-per-line
|
|
362
|
+
*/
|
|
363
|
+
'@stylistic/one-var-declaration-per-line': ['warn', 'initializations'],
|
|
364
|
+
|
|
365
|
+
/**
|
|
366
|
+
* Обеспечить единый стиль переноса строк для операторов
|
|
367
|
+
* https://eslint.style/rules/default/operator-linebreak
|
|
368
|
+
*/
|
|
369
|
+
'@stylistic/operator-linebreak': ['warn', 'before'],
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* Требовать или запрещать отступы внутри блоков
|
|
373
|
+
* https://eslint.style/rules/default/padded-blocks
|
|
374
|
+
*/
|
|
375
|
+
'@stylistic/padded-blocks': ['off'],
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* Требовать или запрещать заполнение строк между операторами
|
|
379
|
+
* https://eslint.style/rules/default/padding-line-between-statements
|
|
380
|
+
*/
|
|
381
|
+
'@stylistic/padding-line-between-statements': [
|
|
382
|
+
'warn',
|
|
383
|
+
{ blankLine: 'always', prev: '*', next: ['*'] },
|
|
384
|
+
{ blankLine: 'any', prev: ['const', 'let', 'var'], next: ['const', 'let', 'var'] },
|
|
385
|
+
{ blankLine: 'any', prev: ['block'], next: ['block'] },
|
|
386
|
+
{ blankLine: 'any', prev: ['block-like'], next: ['block-like'] },
|
|
387
|
+
{ blankLine: 'any', prev: ['cjs-export'], next: ['cjs-export'] },
|
|
388
|
+
{ blankLine: 'any', prev: ['cjs-import'], next: ['cjs-import'] },
|
|
389
|
+
{ blankLine: 'any', prev: ['class'], next: ['class'] },
|
|
390
|
+
{ blankLine: 'any', prev: ['continue'], next: ['continue'] },
|
|
391
|
+
{ blankLine: 'any', prev: ['debugger'], next: ['debugger'] },
|
|
392
|
+
{ blankLine: 'any', prev: ['default'], next: ['default'] },
|
|
393
|
+
{ blankLine: 'any', prev: ['directive'], next: ['directive'] },
|
|
394
|
+
{ blankLine: 'any', prev: ['do'], next: ['do'] },
|
|
395
|
+
{ blankLine: 'any', prev: ['empty'], next: ['empty'] },
|
|
396
|
+
{ blankLine: 'any', prev: ['export'], next: ['export'] },
|
|
397
|
+
{ blankLine: 'any', prev: ['expression'], next: ['expression'] },
|
|
398
|
+
{ blankLine: 'any', prev: ['for'], next: ['for'] },
|
|
399
|
+
{ blankLine: 'any', prev: ['function'], next: ['function'] },
|
|
400
|
+
{ blankLine: 'any', prev: ['if'], next: ['if'] },
|
|
401
|
+
{ blankLine: 'any', prev: ['iife'], next: ['iife'] },
|
|
402
|
+
{ blankLine: 'any', prev: ['import'], next: ['import'] },
|
|
403
|
+
{ blankLine: 'any', prev: ['multiline-block-like'], next: ['multiline-block-like'] },
|
|
404
|
+
{
|
|
405
|
+
blankLine: 'any',
|
|
406
|
+
prev: ['multiline-const', 'multiline-let', 'multiline-var'],
|
|
407
|
+
next: ['multiline-const', 'multiline-let', 'multiline-var'],
|
|
408
|
+
},
|
|
409
|
+
{ blankLine: 'any', prev: ['multiline-export'], next: ['multiline-export'] },
|
|
410
|
+
{ blankLine: 'any', prev: ['multiline-expression'], next: ['multiline-expression'] },
|
|
411
|
+
{ blankLine: 'any', prev: ['return'], next: ['return'] },
|
|
412
|
+
{
|
|
413
|
+
blankLine: 'any',
|
|
414
|
+
prev: ['singleline-const', 'singleline-let', 'singleline-var'],
|
|
415
|
+
next: ['singleline-const', 'singleline-let', 'singleline-var'],
|
|
416
|
+
},
|
|
417
|
+
{ blankLine: 'any', prev: ['singleline-export'], next: ['singleline-export'] },
|
|
418
|
+
{ blankLine: 'any', prev: ['switch'], next: ['switch'] },
|
|
419
|
+
{ blankLine: 'any', prev: ['throw'], next: ['throw'] },
|
|
420
|
+
{ blankLine: 'any', prev: ['try'], next: ['try'] },
|
|
421
|
+
{ blankLine: 'any', prev: ['while'], next: ['while'] },
|
|
422
|
+
{ blankLine: 'any', prev: ['with'], next: ['with'] },
|
|
423
|
+
{ blankLine: 'any', prev: ['type'], next: ['type'] },
|
|
424
|
+
{ blankLine: 'any', prev: ['interface'], next: ['interface'] },
|
|
425
|
+
],
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* Обязательно заключайте в кавычки имена свойств объектов, типов, интерфейсов и перечислений.
|
|
429
|
+
* https://eslint.style/rules/default/quote-props
|
|
430
|
+
*/
|
|
431
|
+
'@stylistic/quote-props': ['warn', 'as-needed', { keywords: false, numbers: true }],
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* Обеспечить последовательное использование обратных кавычек, двойных или одинарных кавычек
|
|
435
|
+
* https://eslint.style/rules/default/quotes
|
|
436
|
+
*/
|
|
437
|
+
'@stylistic/quotes': ['warn', 'single'],
|
|
438
|
+
|
|
439
|
+
/**
|
|
440
|
+
* Обеспечить соблюдение интервалов между операторами rest и spread и их выражениями
|
|
441
|
+
* https://eslint.style/rules/default/rest-spread-spacing
|
|
442
|
+
*/
|
|
443
|
+
'@stylistic/rest-spread-spacing': ['warn', 'never'],
|
|
444
|
+
|
|
445
|
+
/**
|
|
446
|
+
* Требовать или запрещать точки с запятой вместо ASI
|
|
447
|
+
* https://eslint.style/rules/default/semi
|
|
448
|
+
*/
|
|
449
|
+
'@stylistic/semi': ['warn', 'always'],
|
|
450
|
+
|
|
451
|
+
/**
|
|
452
|
+
* Обеспечьте одинаковый интервал до и после точек с запятой
|
|
453
|
+
* https://eslint.style/rules/default/semi-spacing
|
|
454
|
+
*/
|
|
455
|
+
'@stylistic/semi-spacing': ['warn', { before: false, after: true }],
|
|
456
|
+
|
|
457
|
+
/**
|
|
458
|
+
* Обеспечить правильное расположение точек с запятой
|
|
459
|
+
* https://eslint.style/rules/default/semi-style
|
|
460
|
+
*/
|
|
461
|
+
'@stylistic/semi-style': ['warn', 'last'],
|
|
462
|
+
|
|
463
|
+
/**
|
|
464
|
+
* Обеспечьте одинаковый интервал перед блоками
|
|
465
|
+
* https://eslint.style/rules/default/space-before-blocks
|
|
466
|
+
*/
|
|
467
|
+
'@stylistic/space-before-blocks': ['warn', 'always'],
|
|
468
|
+
|
|
469
|
+
/**
|
|
470
|
+
* Обеспечить одинаковый интервал перед скобками функций
|
|
471
|
+
* https://eslint.style/rules/default/space-before-function-paren
|
|
472
|
+
*/
|
|
473
|
+
'@stylistic/space-before-function-paren': ['warn', 'always'],
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* Обеспечьте одинаковый интервал внутри скобок
|
|
477
|
+
* https://eslint.style/rules/default/space-in-parens
|
|
478
|
+
*/
|
|
479
|
+
'@stylistic/space-in-parens': ['warn', 'never'],
|
|
480
|
+
|
|
481
|
+
/**
|
|
482
|
+
* Требуйте пробелов вокруг инфиксных операторов
|
|
483
|
+
* https://eslint.style/rules/default/space-infix-ops
|
|
484
|
+
*/
|
|
485
|
+
'@stylistic/space-infix-ops': ['warn'],
|
|
486
|
+
|
|
487
|
+
/**
|
|
488
|
+
* Обеспечивать единообразие интервалов до и после унарных операторов
|
|
489
|
+
* https://eslint.style/rules/default/space-unary-ops
|
|
490
|
+
*/
|
|
491
|
+
'@stylistic/space-unary-ops': ['warn'],
|
|
492
|
+
|
|
493
|
+
/**
|
|
494
|
+
* Обеспечьте единообразие интервалов после `//` или `/*` в комментариях
|
|
495
|
+
* https://eslint.style/rules/default/spaced-comment
|
|
496
|
+
*/
|
|
497
|
+
'@stylistic/spaced-comment': ['warn', 'always'],
|
|
498
|
+
|
|
499
|
+
/**
|
|
500
|
+
* Обеспечить наличие пробелов вокруг двоеточий в операторах switch
|
|
501
|
+
* https://eslint.style/rules/default/switch-colon-spacing
|
|
502
|
+
*/
|
|
503
|
+
'@stylistic/switch-colon-spacing': ['warn', { after: true, before: false }],
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* Требовать или запрещать пробелы вокруг встроенных выражений строк шаблонов
|
|
507
|
+
* https://eslint.style/rules/default/template-curly-spacing
|
|
508
|
+
*/
|
|
509
|
+
'@stylistic/template-curly-spacing': ['warn', 'never'],
|
|
510
|
+
|
|
511
|
+
/**
|
|
512
|
+
* Требовать или запрещать пробелы между тегами шаблонов и их литералами
|
|
513
|
+
* https://eslint.style/rules/default/template-tag-spacing
|
|
514
|
+
*/
|
|
515
|
+
'@stylistic/template-tag-spacing': ['warn', 'never'],
|
|
516
|
+
|
|
517
|
+
/**
|
|
518
|
+
* Требуйте одинакового интервала вокруг аннотаций типов.
|
|
519
|
+
* https://eslint.style/rules/default/type-annotation-spacing
|
|
520
|
+
*/
|
|
521
|
+
'@stylistic/type-annotation-spacing': ['warn'],
|
|
522
|
+
|
|
523
|
+
/**
|
|
524
|
+
* Обеспечивает единообразие интервалов внутри обобщенных типов TypeScript
|
|
525
|
+
* https://eslint.style/rules/default/type-generic-spacing
|
|
526
|
+
*/
|
|
527
|
+
'@stylistic/type-generic-spacing': ['warn'],
|
|
528
|
+
|
|
529
|
+
/**
|
|
530
|
+
* Ожидайте пробел перед объявлением типа в именованном кортеже
|
|
531
|
+
* https://eslint.style/rules/default/type-named-tuple-spacing
|
|
532
|
+
*/
|
|
533
|
+
'@stylistic/type-named-tuple-spacing': ['warn'],
|
|
534
|
+
|
|
535
|
+
/**
|
|
536
|
+
* Требуйте заключения в скобки непосредственных вызовов `function`
|
|
537
|
+
* https://eslint.style/rules/default/wrap-iife
|
|
538
|
+
*/
|
|
539
|
+
'@stylistic/wrap-iife': ['warn', 'inside'],
|
|
540
|
+
|
|
541
|
+
/**
|
|
542
|
+
* Требуйте заключения в скобки литералов регулярных выражений
|
|
543
|
+
* https://eslint.style/rules/default/wrap-regex
|
|
544
|
+
*/
|
|
545
|
+
'@stylistic/wrap-regex': ['warn'],
|
|
546
|
+
},
|
|
547
|
+
};
|
package/package.json
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flarian/frontend-preset",
|
|
3
|
-
"version": "1.0
|
|
4
|
-
"author": "FlarianWeb",
|
|
3
|
+
"version": "1.1.0",
|
|
5
4
|
"license": "MIT",
|
|
6
|
-
"
|
|
7
|
-
"access": "public",
|
|
8
|
-
"registry": "https://registry.npmjs.org/"
|
|
9
|
-
},
|
|
5
|
+
"author": "FlarianWeb",
|
|
10
6
|
"description": "Frontend preset with ESLint 9 flat config, Prettier and Stylelint",
|
|
11
7
|
"keywords": [
|
|
12
8
|
"eslint",
|
|
@@ -17,33 +13,51 @@
|
|
|
17
13
|
"preset",
|
|
18
14
|
"linting"
|
|
19
15
|
],
|
|
16
|
+
"publishConfig": {
|
|
17
|
+
"access": "public",
|
|
18
|
+
"registry": "https://registry.npmjs.org/"
|
|
19
|
+
},
|
|
20
20
|
"type": "module",
|
|
21
21
|
"files": [
|
|
22
22
|
"eslint",
|
|
23
23
|
"prettier",
|
|
24
24
|
"stylelint"
|
|
25
25
|
],
|
|
26
|
-
"engines": {
|
|
27
|
-
"node": ">=22.5.0"
|
|
28
|
-
},
|
|
29
26
|
"scripts": {},
|
|
30
|
-
"peerDependencies": {
|
|
31
|
-
"eslint": "^9.0.0",
|
|
32
|
-
"eslint-config-prettier": "^9.0.0",
|
|
33
|
-
"eslint-plugin-prettier": "^5.0.0",
|
|
34
|
-
"eslint-plugin-vue": "^9.0.0",
|
|
35
|
-
"prettier": "^3.0.0",
|
|
36
|
-
"stylelint": "^16.0.0",
|
|
37
|
-
"stylelint-config-standard": "^36.0.0"
|
|
38
|
-
},
|
|
39
|
-
"packageManager": "pnpm@10.6.1",
|
|
40
27
|
"devDependencies": {
|
|
28
|
+
"@eslint/js": "9.34.0",
|
|
41
29
|
"@semantic-release/changelog": "6.0.3",
|
|
42
30
|
"@semantic-release/git": "10.0.1",
|
|
43
31
|
"@semantic-release/github": "11.0.5",
|
|
44
32
|
"@semantic-release/npm": "12.0.2",
|
|
33
|
+
"@stylistic/eslint-plugin": "5.2.3",
|
|
45
34
|
"conventional-changelog-conventionalcommits": "9.1.0",
|
|
35
|
+
"eslint": "9.34.0",
|
|
36
|
+
"eslint-config-prettier": "10.1.8",
|
|
37
|
+
"eslint-plugin-jsonc": "2.20.1",
|
|
38
|
+
"eslint-plugin-prettier": "5.5.4",
|
|
39
|
+
"eslint-plugin-simple-import-sort": "12.1.1",
|
|
40
|
+
"eslint-plugin-vue": "10.4.0",
|
|
46
41
|
"prettier": "3.6.2",
|
|
47
|
-
"semantic-release": "24.2.7"
|
|
42
|
+
"semantic-release": "24.2.7",
|
|
43
|
+
"stylelint": "16.23.1",
|
|
44
|
+
"stylelint-config-standard": "39.0.0"
|
|
45
|
+
},
|
|
46
|
+
"engines": {
|
|
47
|
+
"node": ">=22.5.0"
|
|
48
|
+
},
|
|
49
|
+
"packageManager": "pnpm@10.6.1",
|
|
50
|
+
"peerDependencies": {
|
|
51
|
+
"@eslint/js": "9.34.0",
|
|
52
|
+
"@stylistic/eslint-plugin": "5.2.3",
|
|
53
|
+
"eslint": "9.34.0",
|
|
54
|
+
"eslint-config-prettier": "10.1.8",
|
|
55
|
+
"eslint-plugin-jsonc": "2.20.1",
|
|
56
|
+
"eslint-plugin-prettier": "5.5.4",
|
|
57
|
+
"eslint-plugin-simple-import-sort": "12.1.1",
|
|
58
|
+
"eslint-plugin-vue": "10.4.0",
|
|
59
|
+
"prettier": "^3.0.0",
|
|
60
|
+
"stylelint": "16.23.1",
|
|
61
|
+
"stylelint-config-standard": "39.0.0"
|
|
48
62
|
}
|
|
49
63
|
}
|
package/prettier/index.mjs
CHANGED
package/stylelint/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export default {
|
|
2
|
-
|
|
3
|
-
};
|
|
2
|
+
extends: 'stylelint-config-standard',
|
|
3
|
+
};
|