| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- module.exports = {
- plugins: ['jsx-a11y', 'prettier', 'react', 'react-hooks', 'import', 'jest'],
- parser: '@typescript-eslint/parser',
- parserOptions: {
- ecmaVersion: 8,
- tokens: true,
- sourceType: 'module',
- },
- env: {
- browser: true,
- commonjs: true,
- es6: true,
- node: true,
- jest: true,
- },
- extends: [
- 'airbnb-base',
- 'prettier',
- 'plugin:@typescript-eslint/eslint-recommended',
- 'plugin:@typescript-eslint/recommended',
- 'plugin:jest/all',
- 'plugin:jsx-a11y/recommended',
- 'plugin:react/recommended',
- ],
- settings: {
- 'import/extensions': ['.ts', '.tsx', '.js', '.jsx'],
- 'import/parsers': {
- '@typescript-eslint/parser': ['.ts', '.tsx'],
- },
- 'import/resolver': {
- node: {
- extensions: ['.js', '.jsx', '.ts', '.tsx'],
- },
- },
- react: {
- version: 'detect',
- },
- },
- rules: {
- '@typescript-eslint/camelcase': 'off',
- '@typescript-eslint/explicit-function-return-type': 'off',
- '@typescript-eslint/no-explicit-any': [
- 'error',
- {
- ignoreRestArgs: true,
- },
- ],
- '@typescript-eslint/no-shadow': 'error',
- '@typescript-eslint/no-unused-expressions': 'error',
- '@typescript-eslint/no-use-before-define': 'error',
- '@typescript-eslint/no-var-requires': 'off',
- camelcase: 'off',
- 'import/extensions': [
- 'error',
- 'ignorePackages',
- {
- '': 'never',
- js: 'never',
- jsx: 'never',
- ts: 'never',
- tsx: 'never',
- },
- ],
- 'import/order': [
- 'error',
- {
- groups: ['builtin', 'external', 'parent', 'sibling', 'index'],
- alphabetize: {
- order: 'asc',
- caseInsensitive: true,
- },
- },
- ],
- 'import/no-extraneous-dependencies': [
- 'error',
- {
- devDependencies: ['**/*spec.ts', '**/*.spec.tsx', '**/*.spec.js'],
- },
- ],
- 'import/prefer-default-export': 'off',
- 'jest/lowercase-name': 'off',
- 'jest/no-hooks': 'off',
- 'jest/prefer-expect-assertions': 'warn',
- 'jest/prefer-strict-equal': 'warn',
- 'jest/require-top-level-describe': 'off',
- 'jest/valid-title': [
- 'error',
- {
- ignoreTypeOfDescribeName: true,
- },
- ],
- 'max-len': ['error', 120],
- 'no-bitwise': 'off',
- 'no-underscore-dangle': 'off',
- 'no-shadow': 'off',
- 'no-unused-expressions': 'off',
- 'no-use-before-define': 'off',
- 'no-warning-comments': 'warn',
- 'prettier/prettier': ['error'],
- 'react/jsx-filename-extension': [
- 2,
- {
- extensions: ['.js', '.jsx', '.tsx'],
- },
- ],
- 'react/prop-types': 'off',
- 'react-hooks/rules-of-hooks': 'error',
- 'react-hooks/exhaustive-deps': 'warn',
- },
- overrides: [
- {
- files: ['*.ts', '*.tsx'],
- rules: {
- 'no-undef-init': 'off',
- 'prefer-destructuring': 'off',
- '@typescript-eslint/explicit-function-return-type': ['error'],
- '@typescript-eslint/no-unused-vars': ['error', { ignoreRestSiblings: true }],
- '@typescript-eslint/no-var-requires': ['error'],
- },
- },
- ],
- };
|