.eslintrc.cjs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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', // App Plus
  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'],
  44. // 2. 第三方库
  45. ['^@?\\w'],
  46. // 3. 项目内部 - services
  47. ['^@/services/.*/index$', '^@/services(?!/.*/type)', '^@/services/.*/type'],
  48. // 4. 项目内部 - 其他模块
  49. ['^@/(hooks|utils|stores|router|config|constants|types|icons|layout)'],
  50. // 5. 相对路径
  51. ['^\\.'],
  52. // 6. 样式
  53. ['^.+\\.s?css$'],
  54. ],
  55. },
  56. ],
  57. 'simple-import-sort/exports': 'error',
  58. },
  59. }