.eslintrc.cjs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. module.exports = {
  2. root: true,
  3. env: { browser: true, es2020: true },
  4. extends: [
  5. 'eslint:recommended',
  6. 'plugin:@typescript-eslint/recommended',
  7. 'plugin:react-hooks/recommended',
  8. ],
  9. ignorePatterns: ['dist', '.eslintrc.cjs'],
  10. parser: '@typescript-eslint/parser',
  11. plugins: ['react-refresh'],
  12. rules: {
  13. 'react-refresh/only-export-components': [
  14. 'warn',
  15. { allowConstantExport: true },
  16. ],
  17. '@typescript-eslint/consistent-type-imports': 'error',
  18. '@typescript-eslint/member-delimiter-style': [
  19. 'error',
  20. {
  21. 'multiline': {
  22. 'delimiter': 'none',
  23. 'requireLast': true
  24. },
  25. 'singleline': {
  26. 'delimiter': 'comma',
  27. 'requireLast': false
  28. }
  29. }
  30. ],
  31. '@typescript-eslint/type-annotation-spacing': [
  32. 'error',
  33. {
  34. 'before': false,
  35. 'after': true,
  36. 'overrides': {
  37. 'arrow': {
  38. 'before': true,
  39. 'after': true
  40. }
  41. }
  42. }
  43. ],
  44. 'arrow-body-style': [
  45. 'error',
  46. 'as-needed'
  47. ],
  48. 'arrow-spacing': 'error',
  49. 'brace-style': [
  50. 'error',
  51. '1tbs'
  52. ],
  53. 'comma-dangle': [
  54. 'error',
  55. 'always-multiline'
  56. ],
  57. 'curly': [
  58. 'off'
  59. ],
  60. 'eol-last': [
  61. 'error',
  62. 'always'
  63. ],
  64. 'indent': [
  65. 'error',
  66. 2
  67. ],
  68. 'jsx-quotes': [
  69. 'error',
  70. 'prefer-double'
  71. ],
  72. 'line-comment-position': [
  73. 'error',
  74. 'above'
  75. ],
  76. 'linebreak-style': [
  77. 'error',
  78. 'unix'
  79. ],
  80. 'max-len': [
  81. 'warn',
  82. {
  83. 'code': 160
  84. }
  85. ],
  86. 'no-array-constructor': 'error',
  87. 'no-eval': 'error',
  88. 'no-lonely-if': 'error',
  89. 'no-multi-assign': 'error',
  90. 'no-new-object': 'error',
  91. 'no-tabs': 'error',
  92. 'no-trailing-spaces': 'warn',
  93. 'no-unreachable': 'error',
  94. 'no-var': 'error',
  95. 'nonblock-statement-body-position': 'error',
  96. 'one-var': [
  97. 'error',
  98. 'never'
  99. ],
  100. 'prefer-arrow-callback': 'error',
  101. 'prefer-const': 'warn',
  102. 'quotes': [
  103. 'error',
  104. 'single'
  105. ],
  106. 'semi': [
  107. 'error',
  108. 'never'
  109. ],
  110. 'sort-imports': [
  111. 'warn',
  112. {
  113. 'memberSyntaxSortOrder': [
  114. 'none',
  115. 'all',
  116. 'single',
  117. 'multiple'
  118. ]
  119. }
  120. ],
  121. 'sort-vars': 'error'
  122. },
  123. 'overrides': [
  124. {
  125. 'files': [
  126. '*.tsx'
  127. ],
  128. 'rules': {
  129. 'max-len': [
  130. 'off'
  131. ]
  132. }
  133. }
  134. ]
  135. }