Skip to content

Commit 17a8e22

Browse files
authored
Implemented fronted precommit linting (#2868)
1 parent 66d8a52 commit 17a8e22

File tree

39 files changed

+1324
-582
lines changed

39 files changed

+1324
-582
lines changed

.pre-commit-config.yaml

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,3 @@ repos:
1717
rev: v5.0.0
1818
hooks:
1919
- id: end-of-file-fixer
20-
21-
# TODO(oleg): fix ESLint warnings
22-
# - repo: https://github.com/pre-commit/mirrors-eslint
23-
# rev: 'v8.31.0'
24-
# hooks:
25-
# - id: eslint
26-
# name: ESLint
27-
# entry: eslint --fix --config frontend/.eslintrc --ignore-path frontend/.eslintignore
28-
# language: node
29-
# pass_filenames: false
30-
# cwd: "frontend/"
31-
# additional_dependencies:
32-
# - eslint@8.31.0
33-
# - eslint-config-prettier@8.10.0
34-
# - eslint-plugin-i18n@2.4.0
35-
# - eslint-plugin-prettier@4.2.1
36-
# - eslint-plugin-simple-import-sort@10.0.0
37-
# - '@typescript-eslint/eslint-plugin@5.48.1'
38-
# - '@typescript-eslint/parser@5.48.1'

frontend/.eslintignore

Lines changed: 0 additions & 12 deletions
This file was deleted.

frontend/.eslintrc

Lines changed: 0 additions & 34 deletions
This file was deleted.

frontend/.husky/pre-commit

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
cd frontend
2+
npm run precommit

frontend/eslint.config.cjs

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
const { defineConfig, globalIgnores } = require('eslint/config');
2+
const i18N = require('eslint-plugin-i18n');
3+
const simpleImportSort = require('eslint-plugin-simple-import-sort');
4+
const { FlatCompat } = require('@eslint/eslintrc');
5+
const js = require('@eslint/js');
6+
const typescriptEslint = require('@typescript-eslint/eslint-plugin');
7+
const tsParser = require('@typescript-eslint/parser');
8+
9+
const compat = new FlatCompat({
10+
baseDirectory: __dirname,
11+
recommendedConfig: js.configs.recommended,
12+
allConfig: js.configs.all,
13+
});
14+
15+
const BASE_CONFIG = {
16+
extends: compat.extends(
17+
'eslint:recommended',
18+
'plugin:@typescript-eslint/eslint-recommended',
19+
'plugin:@typescript-eslint/recommended',
20+
'prettier',
21+
'plugin:prettier/recommended'
22+
),
23+
24+
plugins: {
25+
'@typescript-eslint': typescriptEslint,
26+
i18n: i18N,
27+
'simple-import-sort': simpleImportSort,
28+
},
29+
30+
languageOptions: {
31+
parser: tsParser,
32+
},
33+
34+
rules: {
35+
'i18n/no-russian-character': 1,
36+
37+
'simple-import-sort/imports': [
38+
'error',
39+
{
40+
groups: [
41+
['^react', 'lodash', '^\\w', '^@?\\w'],
42+
['^components', '^layouts'],
43+
['^consts', '^hooks', '^libs', '^routes', '^services', '^types'],
44+
['^App', '^pages'],
45+
['^\\./(?=.*/)(?!/?$)', '^\\.(?!/?$)', '^\\./?$'],
46+
['./constants/.'],
47+
['./definitions/.', './types'],
48+
['^.+\\.svg', '^.+\\.png$', '^.+\\.jpg', '^.+\\.s?css$'],
49+
],
50+
},
51+
],
52+
},
53+
};
54+
55+
module.exports = defineConfig([
56+
globalIgnores([
57+
'node_modules',
58+
'build',
59+
'server.js',
60+
'src/locale',
61+
'src/types',
62+
'src/setupProxy.js',
63+
'webpack/**/*',
64+
'webpack/env.js',
65+
'webpack/prod.js',
66+
'public',
67+
'staticServer.js',
68+
'webpack.config.js',
69+
]),
70+
{ ...BASE_CONFIG },
71+
]);

0 commit comments

Comments
 (0)