.eslintrc.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. module.exports = {
  2. root: true,
  3. env: {
  4. browser: true,
  5. es6: true,
  6. node: true
  7. },
  8. globals: {
  9. __dirname: true,
  10. process: true,
  11. require: true,
  12. module: true,
  13. AMap: true
  14. },
  15. extends: [
  16. 'plugin:vue/vue3-recommended',
  17. 'plugin:vue/vue3-strongly-recommended',
  18. 'eslint:recommended',
  19. 'plugin:prettier/recommended',
  20. 'prettier',
  21. './.eslintrc-auto-import.js'
  22. ],
  23. parser: 'vue-eslint-parser',
  24. parserOptions: {
  25. sourceType: 'module',
  26. ecmaVersion: 2020,
  27. ecmaFeatures: {
  28. jsx: true
  29. }
  30. },
  31. rules: {
  32. // 代码风格
  33. 'block-spacing': [2, 'always'],
  34. 'no-console': [
  35. 'error',
  36. {
  37. allow: ['info', 'warn', 'error']
  38. }
  39. ],
  40. 'no-debugger': ['warn'],
  41. 'no-empty': ['warn'],
  42. 'brace-style': [
  43. 2,
  44. '1tbs',
  45. {
  46. allowSingleLine: true
  47. }
  48. ],
  49. 'comma-spacing': [
  50. 2,
  51. {
  52. before: false,
  53. after: true
  54. }
  55. ],
  56. 'comma-dangle': [2, 'never'],
  57. 'comma-style': [2, 'last'],
  58. 'computed-property-spacing': [2, 'never'],
  59. indent: [
  60. 0,
  61. 2,
  62. {
  63. SwitchCase: 1
  64. }
  65. ],
  66. 'key-spacing': [
  67. 2,
  68. {
  69. beforeColon: false,
  70. afterColon: true
  71. }
  72. ],
  73. 'keyword-spacing': [
  74. 2,
  75. {
  76. before: true,
  77. after: true
  78. }
  79. ],
  80. 'linebreak-style': 0,
  81. 'multiline-ternary': [2, 'always-multiline'],
  82. 'no-multiple-empty-lines': [
  83. 2,
  84. {
  85. max: 1
  86. }
  87. ],
  88. 'no-unneeded-ternary': [
  89. 2,
  90. {
  91. defaultAssignment: false
  92. }
  93. ],
  94. quotes: [2, 'single'],
  95. semi: [2, 'never'],
  96. 'space-before-blocks': [2, 'always'],
  97. 'space-before-function-paren': 'off',
  98. 'space-in-parens': [2, 'never'],
  99. 'space-infix-ops': 2,
  100. 'space-unary-ops': [
  101. 2,
  102. {
  103. words: true,
  104. nonwords: false
  105. }
  106. ],
  107. 'spaced-comment': [
  108. 2,
  109. 'always',
  110. {
  111. markers: ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
  112. }
  113. ],
  114. 'switch-colon-spacing': [
  115. 2,
  116. {
  117. after: true,
  118. before: false
  119. }
  120. ],
  121. 'object-curly-spacing': [2, 'always'],
  122. // ES6
  123. 'arrow-spacing': [
  124. 2,
  125. {
  126. before: true,
  127. after: true
  128. }
  129. ],
  130. // Vue - https://github.com/vuejs/eslint-plugin-vue
  131. 'vue/attributes-order': 'off',
  132. 'vue/v-on-event-hyphenation': 'off',
  133. 'vue/multi-word-component-names': 'off',
  134. 'vue/one-component-per-file': 'off',
  135. 'vue/html-closing-bracket-newline': 'off',
  136. 'vue/max-attributes-per-line': 'off',
  137. 'vue/multiline-html-element-content-newline': 'off',
  138. 'vue/singleline-html-element-content-newline': 'off',
  139. 'vue/attribute-hyphenation': 'off',
  140. 'vue/require-default-prop': 'off',
  141. 'vue/html-indent': [0, 2],
  142. 'vue/no-v-html': 0,
  143. 'vue/require-explicit-emits': [
  144. 2,
  145. {
  146. allowProps: true
  147. }
  148. ],
  149. 'vue/script-indent': [
  150. 0,
  151. 2,
  152. {
  153. switchCase: 1
  154. }
  155. ]
  156. }
  157. }