/* eslint-env node */ import path from "node:path"; import { fileURLToPath } from "node:url"; import globals from "globals"; import pluginVue from "eslint-plugin-vue"; import parserVue from "vue-eslint-parser"; import parserTs from "@typescript-eslint/parser"; import importPlugin, { createNodeResolver } from "eslint-plugin-import-x"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); export default [ { name: "app/files-to-lint", files: ["**/*.{js,mjs,jsx,vue}"], }, { name: "app/files-to-ignore", ignores: ["**/dist/**", "**/node_modules/**", "**/help-center/**"], }, ...pluginVue.configs["flat/recommended"], { languageOptions: { globals: { ...globals.browser, ...globals.node, }, parser: parserVue, ecmaVersion: "latest", sourceType: "module", parserOptions: { parser: parserTs, }, }, plugins: { "import-x": importPlugin, }, rules: { // 确保导入的模块实际存在(核心规则,防止构建失败) "import-x/no-unresolved": "error", // 确保导入的命名导出实际存在 "import-x/named": "error", // 确保默认导出存在 "import-x/default": "error", // 确保命名空间导出存在 "import-x/namespace": "error", // Vue 相关规则 "vue/multi-word-component-names": "off", }, settings: { "import-x/resolver-next": [ createNodeResolver({ alias: { "@": [path.join(__dirname, "src")], }, extensions: [".mjs", ".cjs", ".js", ".jsx", ".vue", ".json", ".node"], }), ], }, }, ];