diff --git a/packages/codestyle/.eslintrc.react-native.js b/packages/codestyle/.eslintrc.react-native.js index d55e428bf..ca75418d2 100644 --- a/packages/codestyle/.eslintrc.react-native.js +++ b/packages/codestyle/.eslintrc.react-native.js @@ -1,14 +1,17 @@ module.exports = { - extends: ['prettier'], + extends: ['prettier', 'plugin:import/errors', 'plugin:import/warnings'], overrides: [ { files: ['*.ts', '*.tsx'], - plugins: ['@typescript-eslint', 'react', 'react-hooks'], + plugins: ['@typescript-eslint', 'react', 'react-hooks', 'import'], extends: [ 'plugin:@typescript-eslint/eslint-recommended', 'plugin:@typescript-eslint/recommended', 'plugin:@typescript-eslint/recommended-requiring-type-checking', 'prettier', + 'plugin:import/errors', + 'plugin:import/warnings', + 'plugin:import/typescript', ], parser: '@typescript-eslint/parser', parserOptions: { @@ -38,11 +41,30 @@ module.exports = { }, ], parser: '@babel/eslint-parser', - plugins: ['react', 'react-hooks'], + plugins: ['react', 'react-hooks', 'import'], // 0 off, 1 warn, 2 error rules: { complexity: [2, 10], 'handle-callback-err': 2, + 'import/default': 0, // @todo + 'import/named': 0, // @todo + 'import/namespace': 0, // @todo + 'import/no-unresolved': 0, // @todo + 'import/order': [ + 'error', + { + alphabetize: { order: 'asc', caseInsensitive: true }, + groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index'], + 'newlines-between': 'always', + pathGroups: [ + { + pattern: '~**/**', + group: 'sibling', + position: 'before', + }, + ], + }, + ], 'max-len': [ 2, { diff --git a/packages/codestyle/.eslintrc.react.js b/packages/codestyle/.eslintrc.react.js index 8e591c573..ff29ca61d 100644 --- a/packages/codestyle/.eslintrc.react.js +++ b/packages/codestyle/.eslintrc.react.js @@ -6,12 +6,12 @@ module.exports = { jest: true, node: true, }, - extends: ['prettier'], + extends: ['prettier', 'plugin:import/errors', 'plugin:import/warnings'], overrides: [ { files: ['**/*.ts?(x)'], parser: '@typescript-eslint/parser', - plugins: ['@typescript-eslint'], + plugins: ['@typescript-eslint', 'import'], parserOptions: { ecmaFeatures: { jsx: true, @@ -26,6 +26,9 @@ module.exports = { 'plugin:@typescript-eslint/eslint-recommended', 'plugin:@typescript-eslint/recommended', 'plugin:@typescript-eslint/recommended-requiring-type-checking', + 'plugin:import/errors', + 'plugin:import/warnings', + 'plugin:import/typescript', ], // Set ESLint rule to "never" if TypeScript overrides rules: { @@ -60,6 +63,25 @@ module.exports = { root: true, // http://eslint.org/docs/rules/ rules: { + 'import/default': 0, // @todo + 'import/named': 0, // @todo + 'import/namespace': 0, // @todo + 'import/no-unresolved': 0, // @todo + 'import/order': [ + 'error', + { + alphabetize: { order: 'asc', caseInsensitive: true }, + groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index'], + 'newlines-between': 'always', + pathGroups: [ + { + pattern: '~**/**', + group: 'sibling', + position: 'before', + }, + ], + }, + ], 'react-hooks/exhaustive-deps': 'warn', 'react-hooks/rules-of-hooks': 'error', }, diff --git a/packages/codestyle/package.json b/packages/codestyle/package.json index 270dfaf8f..65c9110c4 100644 --- a/packages/codestyle/package.json +++ b/packages/codestyle/package.json @@ -37,6 +37,7 @@ "eslint": "7.25.0", "eslint-config-prettier": "8.3.0", "eslint-plugin-import": "2.22.1", + "eslint-plugin-jest": "24.3.6", "eslint-plugin-jsx-a11y": "6.4.1", "eslint-plugin-react": "7.23.2", "eslint-plugin-react-hooks": "4.2.0",