eslint.config.mjs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import vue from "eslint-plugin-vue";
  2. import typescriptEslint from "@typescript-eslint/eslint-plugin";
  3. import globals from "globals";
  4. import parser from "vue-eslint-parser";
  5. import path from "node:path";
  6. import { fileURLToPath } from "node:url";
  7. import js from "@eslint/js";
  8. import { FlatCompat } from "@eslint/eslintrc";
  9. const __filename = fileURLToPath(import.meta.url);
  10. const __dirname = path.dirname(__filename);
  11. const compat = new FlatCompat({
  12. baseDirectory: __dirname,
  13. recommendedConfig: js.configs.recommended,
  14. allConfig: js.configs.all
  15. });
  16. export default [{
  17. ignores: ["**/.nuxt", "coverage/*", "vendor/*", "dist/*", "models/models.ts"],
  18. }, ...compat.extends(
  19. "@nuxtjs/eslint-config-typescript",
  20. "plugin:nuxt/recommended",
  21. "eslint:recommended",
  22. "plugin:@typescript-eslint/recommended",
  23. "plugin:vue/vue3-recommended",
  24. "plugin:prettier/recommended",
  25. "plugin:you-dont-need-lodash-underscore/compatible",
  26. ), {
  27. plugins: {
  28. vue,
  29. "@typescript-eslint": typescriptEslint,
  30. },
  31. languageOptions: {
  32. globals: {
  33. ...globals.browser,
  34. ...globals.node,
  35. useRuntimeConfig: "readonly",
  36. useAsyncData: "readonly",
  37. navigateTo: "readonly",
  38. computed: "readonly",
  39. ref: "readonly",
  40. definePageMeta: "readonly",
  41. useRouter: "readonly",
  42. useRoute: "readonly",
  43. useI18n: "readonly",
  44. onMounted: "readonly",
  45. onUnmounted: "readonly",
  46. watch: "readonly",
  47. useRepo: "readonly",
  48. },
  49. parser: parser,
  50. ecmaVersion: 2020,
  51. sourceType: "module",
  52. parserOptions: {
  53. parser: "@typescript-eslint/parser",
  54. tsconfigRootDir: "/home/workspace",
  55. },
  56. },
  57. rules: {
  58. "no-console": 0,
  59. "vue/valid-v-slot": ["error", {
  60. allowModifiers: true,
  61. }],
  62. "vue/multi-word-component-names": 0,
  63. "@typescript-eslint/no-inferrable-types": 0,
  64. },
  65. }];