.eslintrc.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. jest: true,
  15. },
  16. extends: [
  17. 'airbnb-base',
  18. 'prettier',
  19. 'plugin:@typescript-eslint/eslint-recommended',
  20. 'plugin:@typescript-eslint/recommended',
  21. 'plugin:react/recommended',
  22. ],
  23. settings: {
  24. 'import/resolver': {
  25. alias: {
  26. map: [
  27. ['~client', './web/src'],
  28. ['~client-test', './web/test'],
  29. ['~api', './api/src'],
  30. ['~api-test', './api/test'],
  31. ],
  32. extensions: ['.js', '.tsx', '.ts'],
  33. },
  34. },
  35. react: {
  36. version: 'detect',
  37. },
  38. },
  39. rules: {
  40. '@typescript-eslint/explicit-function-return-type': 'off',
  41. '@typescript-eslint/no-explicit-any': [
  42. 'error',
  43. {
  44. ignoreRestArgs: true,
  45. },
  46. ],
  47. '@typescript-eslint/no-var-requires': 'off',
  48. 'import/extensions': [
  49. 'error',
  50. 'ignorePackages',
  51. {
  52. js: 'never',
  53. jsx: 'never',
  54. ts: 'never',
  55. tsx: 'never',
  56. mjs: 'never',
  57. },
  58. ],
  59. 'import/no-extraneous-dependencies': [
  60. 'error',
  61. {
  62. devDependencies: [
  63. 'api/src/global.d.ts',
  64. '**/*spec.ts',
  65. '**/*.spec.tsx',
  66. '**/*.spec.js',
  67. '**/__tests__/*.ts',
  68. ],
  69. },
  70. ],
  71. 'import/prefer-default-export': 0,
  72. 'jest/lowercase-name': 0,
  73. 'jest/require-top-level-describe': 0,
  74. 'max-len': ['error', 120],
  75. 'no-bitwise': 0,
  76. 'no-underscore-dangle': 0,
  77. 'prettier/prettier': ['error'],
  78. 'react/jsx-filename-extension': [
  79. 2,
  80. {
  81. extensions: ['.js', '.jsx', '.tsx'],
  82. },
  83. ],
  84. 'react/prop-types': 0,
  85. 'react-hooks/rules-of-hooks': 'error',
  86. 'react-hooks/exhaustive-deps': 'warn',
  87. '@typescript-eslint/camelcase': 0,
  88. },
  89. overrides: [
  90. {
  91. files: ['*.ts', '*.tsx'],
  92. rules: {
  93. 'prefer-destructuring': 0,
  94. '@typescript-eslint/explicit-function-return-type': ['error'],
  95. '@typescript-eslint/no-unused-vars': ['error', { ignoreRestSiblings: true }],
  96. '@typescript-eslint/no-var-requires': ['error'],
  97. },
  98. },
  99. ],
  100. };