123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- // @ts-check
- const { defineConfig } = require("eslint-define-config");
- module.exports = defineConfig({
- root: true,
- env: {
- node: true
- },
- globals: {
- // Ref sugar (take 2)
- $: "readonly",
- $$: "readonly",
- $ref: "readonly",
- $shallowRef: "readonly",
- $computed: "readonly",
- // index.d.ts
- // global.d.ts
- Fn: "readonly",
- PromiseFn: "readonly",
- RefType: "readonly",
- LabelValueOptions: "readonly",
- EmitType: "readonly",
- TargetContext: "readonly",
- ComponentElRef: "readonly",
- ComponentRef: "readonly",
- ElRef: "readonly",
- global: "readonly",
- ForDataType: "readonly",
- ComponentRoutes: "readonly",
- // script setup
- defineProps: "readonly",
- defineEmits: "readonly",
- defineExpose: "readonly",
- withDefaults: "readonly"
- },
- extends: [
- "plugin:vue/vue3-essential",
- "eslint:recommended",
- "@vue/typescript/recommended",
- "@vue/prettier",
- "@vue/eslint-config-typescript"
- ],
- parser: "vue-eslint-parser",
- parserOptions: {
- parser: "@typescript-eslint/parser",
- ecmaVersion: "latest",
- sourceType: "module",
- jsxPragma: "React",
- ecmaFeatures: {
- jsx: true
- }
- },
- overrides: [
- {
- files: ["*.ts", "*.vue"],
- rules: {
- "no-undef": "off"
- }
- },
- {
- files: ["iconfont.js"],
- rules: {
- "no-var": "off",
- "prefer-const": "off"
- }
- },
- {
- files: ["*.vue"],
- parser: "vue-eslint-parser",
- parserOptions: {
- parser: "@typescript-eslint/parser",
- extraFileExtensions: [".vue"],
- ecmaVersion: "latest",
- ecmaFeatures: {
- jsx: true
- }
- },
- rules: {
- "no-undef": "off"
- }
- }
- ],
- rules: {
- "vue/no-v-html": "off",
- "vue/require-default-prop": "off",
- "vue/require-explicit-emits": "off",
- "vue/multi-word-component-names": "off",
- "@typescript-eslint/no-explicit-any": "off", // any
- "no-debugger": "off",
- "@typescript-eslint/explicit-module-boundary-types": "off", // setup()
- "@typescript-eslint/ban-types": "off",
- "@typescript-eslint/ban-ts-comment": "off",
- "@typescript-eslint/no-empty-function": "off",
- "@typescript-eslint/no-non-null-assertion": "off",
- "vue/html-self-closing": [
- "error",
- {
- html: {
- void: "always",
- normal: "always",
- component: "always"
- },
- svg: "always",
- math: "always"
- }
- ],
- "@typescript-eslint/no-unused-vars": [
- "error",
- {
- argsIgnorePattern: "^_",
- varsIgnorePattern: "^_"
- }
- ],
- "no-unused-vars": [
- "error",
- {
- argsIgnorePattern: "^_",
- varsIgnorePattern: "^_"
- }
- ],
- "prettier/prettier": [
- "error",
- {
- endOfLine: "auto"
- }
- ]
- }
- });
|