.eslintrc.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. module.exports = {
  2. plugins: ['prettier', 'react', 'react-hooks', 'import'],
  3. parser: '@typescript-eslint/parser',
  4. parserOptions: {
  5. ecmaVersion: 8,
  6. tokens: true,
  7. sourceType: 'module',
  8. },
  9. env: {
  10. browser: true,
  11. commonjs: true,
  12. es6: true,
  13. node: true,
  14. },
  15. extends: [
  16. 'airbnb-base',
  17. 'prettier',
  18. 'plugin:@typescript-eslint/eslint-recommended',
  19. 'plugin:@typescript-eslint/recommended',
  20. 'plugin:react/recommended',
  21. ],
  22. settings: {
  23. 'import/resolver': {
  24. alias: {
  25. map: [
  26. ['~client', './web/src'],
  27. ['~client-test', './web/test'],
  28. ['~api', './api/src'],
  29. ['~api-test', './api/test'],
  30. ],
  31. extensions: ['.js', '.tsx', '.ts'],
  32. },
  33. },
  34. react: {
  35. version: 'detect',
  36. },
  37. },
  38. rules: {
  39. '@typescript-eslint/explicit-function-return-type': 'off',
  40. '@typescript-eslint/no-explicit-any': [
  41. 'error',
  42. {
  43. ignoreRestArgs: true,
  44. },
  45. ],
  46. '@typescript-eslint/no-var-requires': 'off',
  47. 'import/extensions': [
  48. 'error',
  49. {
  50. ts: 'never',
  51. tsx: 'never',
  52. js: 'never',
  53. jsx: 'never',
  54. },
  55. ],
  56. 'import/no-extraneous-dependencies': [
  57. 'error',
  58. {
  59. devDependencies: ['**/*spec.ts', '**/*.spec.tsx', '**/*.spec.js'],
  60. },
  61. ],
  62. 'import/prefer-default-export': 0,
  63. 'jest/lowercase-name': 0,
  64. 'jest/require-top-level-describe': 0,
  65. 'max-len': ['error', 120],
  66. 'no-bitwise': 0,
  67. 'no-underscore-dangle': 0,
  68. 'prettier/prettier': ['error'],
  69. 'react/jsx-filename-extension': [
  70. 2,
  71. {
  72. extensions: ['.js', '.jsx', '.tsx'],
  73. },
  74. ],
  75. 'react/prop-types': 0,
  76. 'react-hooks/rules-of-hooks': 'error',
  77. 'react-hooks/exhaustive-deps': 'warn',
  78. },
  79. overrides: [
  80. {
  81. files: ['*.ts', '*.tsx'],
  82. rules: {
  83. 'prefer-destructuring': 0,
  84. '@typescript-eslint/explicit-function-return-type': ['error'],
  85. '@typescript-eslint/no-unused-vars': ['error', { ignoreRestSiblings: true }],
  86. '@typescript-eslint/no-var-requires': ['error'],
  87. },
  88. },
  89. ],
  90. };