.eslintrc.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. //vue eslint url https://eslint.vuejs.org/rules
  2. module.exports = {
  3. root: true,
  4. env: {
  5. node: true,
  6. 'vue/setup-compiler-macros': true
  7. },
  8. globals: {
  9. defineProps: 'readonly',
  10. defineEmits: 'readonly'
  11. },
  12. 'extends': [
  13. 'plugin:vue/vue3-essential',
  14. 'eslint:recommended',
  15. '@vue/typescript/recommended'
  16. ],
  17. parserOptions: {
  18. ecmaVersion: 2020
  19. },
  20. rules: {
  21. '@typescript-eslint/no-explicit-any': ['off'],
  22. 'vue/comment-directive': 'off',
  23. 'no-console': 'off',
  24. 'generator-star-spacing': 'off',
  25. 'no-mixed-operators': 0,
  26. // 'reportUnusedDisableDirectives':true,
  27. 'arrow-spacing': [2, {
  28. 'before': true,
  29. 'after': true
  30. }], // 要求箭头函数的箭头之前或之后有空格
  31. 'block-spacing': [2, 'always'], // 禁止或强制在代码块中开括号前和闭括号后有空格
  32. 'brace-style': [2, '1tbs', {
  33. 'allowSingleLine': true // 允许块的开括号和闭括号在 同一行
  34. }], // 大括号的风格统一使用one true brace style
  35. 'vue/max-attributes-per-line': [
  36. 2,
  37. {
  38. singleline: 5, // 配置单行能够防止的属性个数, 和多行的配置是二选一的
  39. multiline:2 // 配置单行能够防止的属性个数,和单行的配置是二选一的
  40. }
  41. ],
  42. quotes: [2, 'single', { // js代码中,必须使用单引号
  43. 'avoidEscape': true, // 允许字符串使用单引号或双引号,只要字符串中包含了一个其它引号,否则需要转义
  44. 'allowTemplateLiterals': true // 允许字符串使用反勾号
  45. }], // 强制使用一致的反勾号、双引号或单引号
  46. 'semi': [ // 末尾不用出现分号
  47. 2,
  48. 'never',
  49. {
  50. beforeStatementContinuationChars: 'never' //"never" 如果该语句不会因为ASI而带来风险,那么即使它的下一行语句以 [,(,/,+,或 - 开头,也不允许在语句末尾添加分号。
  51. }
  52. ],
  53. 'no-delete-var': 2, // 禁止对变量使用 delete 操作符。
  54. 'vue/v-on-event-hyphenation': ['error', 'always', { //组件参数规范,always使用-分隔,never使用驼峰分隔
  55. 'autofix': false, //自动修复,Vue2不建议使用,可能会有问题
  56. 'ignore': [] //忽略的名称数组
  57. }],
  58. 'vue/no-multi-spaces': 2, //不允许多个空格
  59. 'vue/no-spaces-around-equal-signs-in-attribute':2, //属性中的等号周围不允许有空格
  60. 'vue/require-explicit-emits': ['error', { //要求emits必须命名
  61. 'allowProps': false
  62. }],
  63. 'vue/attributes-order': ['error', { // 属性顺序强制执行属性顺序
  64. 'order': [
  65. 'DEFINITION',
  66. 'LIST_RENDERING',
  67. 'CONDITIONALS',
  68. 'RENDER_MODIFIERS',
  69. 'GLOBAL',
  70. ['UNIQUE', 'SLOT'],
  71. 'TWO_WAY_BINDING',
  72. 'OTHER_DIRECTIVES',
  73. 'OTHER_ATTR',
  74. 'EVENTS',
  75. 'CONTENT'
  76. ],
  77. 'alphabetical': false
  78. }],
  79. 'vue/html-closing-bracket-spacing': ['error', { //vue标签闭合间距
  80. 'startTag': 'never',
  81. 'endTag': 'never',
  82. 'selfClosingTag': 'always' //单标签需要空格
  83. }],
  84. 'prefer-const': [ // 要求使用 const 声明那些声明后不再被修改的变量
  85. 2,
  86. {
  87. ignoreReadBeforeAssign: false //忽略声明和第一次赋值之间的变量
  88. }
  89. ],
  90. 'vue/script-indent': [ //vue script缩进
  91. 'error',
  92. 2, //缩进的类型。默认为2。如果这是一个数字,它是一个缩进的空格数。如果是"tab",它使用一个制表符进行一个缩进。
  93. {
  94. 'baseIndent': 1 //基础缩进
  95. }
  96. ],
  97. 'vue/html-quotes': 2, //html属性引号,默认双引号
  98. 'vue/html-indent': [ //vue template缩进
  99. 'error',
  100. 2,
  101. {
  102. 'baseIndent': 1
  103. }
  104. ],
  105. 'operator-linebreak': [2, 'after', { // 要求把换行符放在操作符后面
  106. 'overrides': {
  107. '?': 'before', // 问号置于操作数之前
  108. ':': 'before' // 冒号置于操作数之前
  109. }
  110. }],
  111. 'space-before-blocks': [2, 'always'], // 强制代码块之前出现空格
  112. 'template-curly-spacing': 'off',
  113. // 'space-before-function-paren': [2, 'never'], //关闭函数圆括号之前有一个空格,这个会和prettier冲突,暂未找到解决方法
  114. 'require-await': 'off',
  115. '@typescript-eslint/ban-ts-ignore': 'off',
  116. '@typescript-eslint/explicit-function-return-type': 'off',
  117. '@typescript-eslint/no-var-requires': 'off',
  118. '@typescript-eslint/no-empty-function': 'off',
  119. 'vue/custom-event-name-casing': 'off',
  120. 'no-use-before-define': 'off',
  121. '@typescript-eslint/no-use-before-define': 'off',
  122. '@typescript-eslint/ban-ts-comment': 'off',
  123. '@typescript-eslint/ban-types': 'off',
  124. '@typescript-eslint/no-non-null-assertion': 'off',
  125. '@typescript-eslint/explicit-module-boundary-types': 'off',
  126. '@typescript-eslint/no-unused-vars': [
  127. 'error',
  128. {
  129. argsIgnorePattern: '^h$',
  130. varsIgnorePattern: '^h$'
  131. }
  132. ],
  133. 'no-unused-vars': [
  134. 'error',
  135. {
  136. argsIgnorePattern: '^h$',
  137. varsIgnorePattern: '^h$'
  138. }
  139. ],
  140. 'comma-dangle': ['error', 'never'], // 对象字面量项尾不能有逗号
  141. 'no-proto': 2,//禁止使用__proto__属性
  142. 'no-redeclare': 2,//禁止重复声明变量
  143. 'no-trailing-spaces': 2, // 禁止使用行尾空白(空格、tab 和其它 Unicode 空白字符)。
  144. 'no-undef': 2,//不能有未定义的变量
  145. 'eol-last': 2 // 文件末尾需存在至少一行空行
  146. }
  147. }