import hopeConfig, { config, globals, tsParser, } from "eslint-config-mister-hope"; import { vue, vueParser } from "eslint-config-mister-hope/vue"; export default config( ...hopeConfig, ...vue, { ignores: [ "**/dist/**", "**/node_modules/**", "coverage/**", "docs-shared/lib/**", "packages/*/assets/**", "packages/*/lib/**", "packages/create/template/**", "**/.vuepress/.cache/", "**/.vuepress/.temp/", ], }, { languageOptions: { ecmaVersion: "latest", sourceType: "module", parser: vueParser, parserOptions: { parser: tsParser, tsconfigDirName: import.meta.dirname, project: "./tsconfig.eslint.json", extraFileExtensions: [".vue"], }, }, }, { settings: { "import/internal-regex": "^@(?:internal|temp|theme-hope)/", }, rules: { "import/no-restricted-paths": [ "error", { zones: [ { target: "packages/*/src/client/**", from: "packages/*/src/node/**", }, { target: "packages/*/src/node/**", from: "packages/*/src/client/**", }, ], }, ], }, }, { files: ["**/*.{ts,vue}"], rules: { "@typescript-eslint/naming-convention": [ "warn", { selector: "default", format: ["camelCase"], leadingUnderscore: "allowSingleOrDouble", trailingUnderscore: "allow", }, { selector: ["variable"], format: ["camelCase", "PascalCase", "UPPER_CASE"], leadingUnderscore: "allowSingleOrDouble", trailingUnderscore: "allowSingleOrDouble", }, { selector: ["parameter"], format: ["camelCase", "PascalCase"], leadingUnderscore: "allow", trailingUnderscore: "allow", }, // allow locales path like `/zh/`, alias starting with `@` and css property like `line-width` { selector: ["property"], format: null, custom: { regex: "(^/$|^/.*/$|^@|^[a-z]+(?:-[a-z]+)*?$)", match: true, }, filter: "(^/$|^/.*/$|^@|^[a-z]+(?:-[a-z]+)*?$)", }, { selector: ["property"], format: ["camelCase", "PascalCase", "UPPER_CASE"], leadingUnderscore: "allow", trailingUnderscore: "allow", }, { selector: "import", format: ["PascalCase", "camelCase"], }, { selector: "typeLike", format: ["PascalCase"], }, ], }, }, { files: ["packages/*/src/client/**/*.ts"], rules: { "import/dynamic-import-chunkname": "error", }, }, { files: ["scripts/**.ts", "**/gulpfile.js"], languageOptions: { globals: globals.node, }, }, );