eslint.config.cjs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. const js = require('@eslint/js')
  2. const tsPlugin = require('@typescript-eslint/eslint-plugin')
  3. const tsParser = require('@typescript-eslint/parser')
  4. const vuePlugin = require('eslint-plugin-vue')
  5. const vueParser = require('vue-eslint-parser')
  6. module.exports = [
  7. {
  8. ignores: [
  9. 'dist/**',
  10. 'node_modules/**',
  11. 'eslint.config.cjs'
  12. ]
  13. },
  14. js.configs.recommended,
  15. ...tsPlugin.configs['flat/recommended'],
  16. ...vuePlugin.configs['flat/recommended'],
  17. {
  18. files: ['**/*.{js,jsx,cjs,mjs,ts,tsx,cts,mts,vue}'],
  19. languageOptions: {
  20. ecmaVersion: 'latest',
  21. sourceType: 'module',
  22. globals: {
  23. window: 'readonly',
  24. document: 'readonly',
  25. navigator: 'readonly',
  26. localStorage: 'readonly',
  27. console: 'readonly',
  28. setTimeout: 'readonly',
  29. clearTimeout: 'readonly',
  30. setInterval: 'readonly',
  31. clearInterval: 'readonly',
  32. HTMLElement: 'readonly',
  33. HTMLInputElement: 'readonly',
  34. MouseEvent: 'readonly',
  35. Event: 'readonly',
  36. Node: 'readonly'
  37. },
  38. parserOptions: {
  39. parser: tsParser
  40. }
  41. },
  42. rules: {
  43. 'vue/multi-word-component-names': 'off'
  44. }
  45. },
  46. {
  47. files: ['**/*.vue'],
  48. languageOptions: {
  49. parser: vueParser,
  50. parserOptions: {
  51. ecmaVersion: 'latest',
  52. sourceType: 'module',
  53. parser: tsParser
  54. }
  55. }
  56. }
  57. ]