You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
2.3 KiB

1 week ago
  1. // 从 URL 和路径模块中导入必要的功能
  2. import fs from 'fs'
  3. import path, { dirname } from 'path'
  4. import { fileURLToPath } from 'url'
  5. // 从 ESLint 插件中导入推荐配置
  6. import pluginJs from '@eslint/js'
  7. import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'
  8. import pluginVue from 'eslint-plugin-vue'
  9. import globals from 'globals'
  10. import tseslint from 'typescript-eslint'
  11. // 使用 import.meta.url 获取当前模块的路径
  12. const __filename = fileURLToPath(import.meta.url)
  13. const __dirname = dirname(__filename)
  14. // 读取 .auto-import.json 文件的内容,并将其解析为 JSON 对象
  15. const autoImportConfig = JSON.parse(
  16. fs.readFileSync(path.resolve(__dirname, '.auto-import.json'), 'utf-8')
  17. )
  18. export default [
  19. // 指定文件匹配规则
  20. {
  21. files: ['**/*.{js,mjs,cjs,ts,vue}']
  22. },
  23. // 指定全局变量和环境
  24. {
  25. languageOptions: {
  26. globals: {
  27. ...globals.browser,
  28. ...globals.node
  29. }
  30. }
  31. },
  32. // 扩展配置
  33. pluginJs.configs.recommended,
  34. ...tseslint.configs.recommended,
  35. ...pluginVue.configs['flat/essential'],
  36. // 自定义规则
  37. {
  38. // 针对所有 JavaScript、TypeScript 和 Vue 文件应用以下配置
  39. files: ['**/*.{js,mjs,cjs,ts,vue}'],
  40. languageOptions: {
  41. globals: {
  42. // 合并从 autoImportConfig 中读取的全局变量配置
  43. ...autoImportConfig.globals,
  44. // TypeScript 全局命名空间
  45. Api: 'readonly',
  46. Form: 'readonly'
  47. }
  48. },
  49. rules: {
  50. quotes: ['error', 'single'], // 使用单引号
  51. semi: ['error', 'never'], // 语句末尾不加分号
  52. 'no-var': 'error', // 要求使用 let 或 const 而不是 var
  53. '@typescript-eslint/no-explicit-any': 'off', // 禁用 any 检查
  54. 'vue/multi-word-component-names': 'off', // 禁用对 Vue 组件名称的多词要求检查
  55. 'no-multiple-empty-lines': ['warn', { max: 1 }], // 不允许多个空行
  56. 'no-unexpected-multiline': 'error' // 禁止空余的多行
  57. }
  58. },
  59. // vue 规则
  60. {
  61. files: ['**/*.vue'],
  62. languageOptions: {
  63. parserOptions: { parser: tseslint.parser }
  64. }
  65. },
  66. // 忽略文件
  67. {
  68. ignores: [
  69. 'node_modules',
  70. 'dist',
  71. 'public',
  72. '.vscode/**',
  73. 'src/assets/**',
  74. 'src/utils/console.ts'
  75. ]
  76. },
  77. // prettier 配置
  78. eslintPluginPrettierRecommended
  79. ]