.eslintrc.cjs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // .eslintrc.cjs
  2. module.exports = {
  3. root: true,
  4. env: {
  5. node: true,
  6. es2021: true,
  7. },
  8. globals: {
  9. uni: 'readonly',
  10. wx: 'readonly',
  11. my: 'readonly',
  12. plus: 'readonly',
  13. getApp: 'readonly',
  14. getCurrentPages: 'readonly',
  15. },
  16. parser: 'vue-eslint-parser',
  17. parserOptions: {
  18. parser: '@typescript-eslint/parser',
  19. ecmaVersion: 'latest',
  20. sourceType: 'module',
  21. extraFileExtensions: ['.vue'],
  22. },
  23. plugins: ['vue', '@typescript-eslint', 'simple-import-sort'],
  24. extends: [
  25. 'eslint:recommended',
  26. 'plugin:vue/vue3-essential',
  27. 'plugin:@typescript-eslint/recommended',
  28. 'prettier',
  29. ],
  30. ignorePatterns: ['dist/', 'dist-ssr/', 'coverage/', 'node_modules/'],
  31. rules: {
  32. /* ========= Vue ========= */
  33. 'vue/multi-word-component-names': 'off',
  34. /* ========= TypeScript ========= */
  35. '@typescript-eslint/no-explicit-any': 'off',
  36. '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
  37. /* ========= Import Sort(核心) ========= */
  38. 'simple-import-sort/imports': [
  39. 'error',
  40. {
  41. groups: [
  42. // 1. Vue / 框架核心
  43. ['^vue$', '^vue-router$', '^pinia$'],
  44. // 2. 其他第三方依赖
  45. ['^@?\\w'],
  46. // 3. 项目基础设施
  47. ['^@/(lib|plugins|config|themes|styles)(/.*)?$'],
  48. // 4. services
  49. ['^@/services(/.*)?$'],
  50. // 5. 状态 / composables
  51. ['^@/(stores|composables)(/.*)?$'],
  52. // 6. utils / validators / constants / types
  53. ['^@/(utils|validators|constants|types)(/.*)?$'],
  54. // 7. components / pages
  55. ['^@/(components|pages)(/.*)?$'],
  56. // 8. 相对路径
  57. ['^\\.'],
  58. // 9. 样式
  59. ['^.+\\.s?css$'],
  60. ],
  61. },
  62. ],
  63. 'simple-import-sort/exports': 'error',
  64. 'no-undef': 'off',
  65. },
  66. }