eslint.config.mjs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // 引入vue模版的eslint
  2. import pluginVue from 'eslint-plugin-vue'
  3. import eslint from '@eslint/js'
  4. // ts-eslint解析器,使 eslint 可以解析 ts 语法
  5. import tseslint from 'typescript-eslint'
  6. // vue文件解析器
  7. import vueParser from 'vue-eslint-parser'
  8. import prettier from 'eslint-plugin-prettier'
  9. export default tseslint.config({
  10. // ignores: ['node_modules', 'prettier.config.cjs', 'dist*'],
  11. files: ['src/**/*.ts', 'src/**/*.tsx', 'src/**/*.vue'],
  12. // tseslint.config添加了extends扁平函数,直接用。否则是eslint9.0版本是没有extends的
  13. extends: [
  14. eslint.configs.recommended,
  15. ...tseslint.configs.recommended,
  16. ...pluginVue.configs['flat/essential']
  17. ],
  18. plugins: {
  19. prettier
  20. },
  21. languageOptions: {
  22. parser: vueParser, // 使用vue解析器,这个可以识别vue文件
  23. parserOptions: {
  24. parser: tseslint.parser, // 在vue文件上使用ts解析器
  25. sourceType: 'module',
  26. ecmaVersion: 2020,
  27. ecmaFeatures: {
  28. jsx: true
  29. }
  30. }
  31. },
  32. rules: {
  33. 'prettier/prettier': 'error',
  34. 'no-useless-escape': 0,
  35. 'no-undef': 0,
  36. '@typescript-eslint/no-unused-expressions': 0,
  37. '@typescript-eslint/no-unsafe-function-type': 0,
  38. 'vue/no-setup-props-destructure': 0,
  39. 'vue/script-setup-uses-vars': 1,
  40. 'vue/no-reserved-component-names': 0,
  41. '@typescript-eslint/ban-ts-ignore': 0,
  42. '@typescript-eslint/explicit-function-return-type': 0,
  43. '@typescript-eslint/no-explicit-any': 0,
  44. '@typescript-eslint/no-var-requires': 0,
  45. '@typescript-eslint/no-empty-function': 0,
  46. 'vue/custom-event-name-casing': 0,
  47. 'no-use-before-define': 0,
  48. '@typescript-eslint/no-use-before-define': 0,
  49. '@typescript-eslint/ban-ts-comment': 0,
  50. '@typescript-eslint/ban-types': 0,
  51. '@typescript-eslint/no-non-null-assertion': 0,
  52. '@typescript-eslint/explicit-module-boundary-types': 0,
  53. '@typescript-eslint/no-unused-vars': 0,
  54. 'no-unused-vars': 0,
  55. 'space-before-function-paren': 0,
  56. 'vue/attributes-order': 0,
  57. 'vue/one-component-per-file': 0,
  58. 'vue/html-closing-bracket-newline': 0,
  59. 'vue/max-attributes-per-line': 0,
  60. 'vue/multiline-html-element-content-newline': 0,
  61. 'vue/singleline-html-element-content-newline': 0,
  62. 'vue/attribute-hyphenation': 0,
  63. 'vue/require-default-prop': 0,
  64. 'vue/require-explicit-emits': 0,
  65. 'vue/html-self-closing': [
  66. 1,
  67. {
  68. html: {
  69. void: 'always',
  70. normal: 'never',
  71. component: 'always'
  72. },
  73. svg: 'always',
  74. math: 'always'
  75. }
  76. ],
  77. 'vue/multi-word-component-names': 0,
  78. 'vue/no-v-html': 0,
  79. 'vue/require-toggle-inside-transition': 0
  80. }
  81. })