Files
TeyvatGuide/eslint/vueEslint.js
BTMuli cfdf5f8e65 🧑‍💻 修复eslint异常
2025-09-09 15:12:30 +08:00

61 lines
2.0 KiB
JavaScript

/**
* @file eslint/vueEslint.js
* @description Vue相关的ESLint配置
* @since Beta v0.8.0
*/
import pluginImport from "eslint-plugin-import";
import pluginPrettier from "eslint-plugin-prettier";
import pluginVue from "eslint-plugin-vue";
import globals from "globals";
import eslintTs from "typescript-eslint";
import parserVue from "vue-eslint-parser";
import appRootPath from "app-root-path";
const tsConfigRules = {
"@typescript-eslint/consistent-type-assertions": ["error", { assertionStyle: "angle-bracket" }],
"@typescript-eslint/no-import-type-side-effects": "error",
"@typescript-eslint/strict-boolean-expressions": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-unused-expressions": ["error", { allowShortCircuit: false }],
"import/order": [
"error",
{
groups: ["builtin", "external", "internal", "parent", "sibling", "index", "unknown"],
"newlines-between": "always",
alphabetize: { order: "asc", caseInsensitive: true },
},
],
"prettier/prettier": "error",
};
const tsConfig = {
files: ["*.ts", "*.d.ts", "src/**/*.ts", "src/**/*.d.ts"],
plugins: { typescript: eslintTs, import: pluginImport, prettier: pluginPrettier },
languageOptions: {
parser: eslintTs.parser,
parserOptions: { project: "tsconfig.json", tsconfigRootDir: appRootPath.path },
},
rules: tsConfigRules,
};
const vueConfig = {
files: ["src/**/*.vue", "src/App.vue"],
plugins: { vue: pluginVue, import: pluginImport, prettier: pluginPrettier },
languageOptions: {
globals: { ...globals.browser, ...globals.es2021, TGApp: "readonly", window: "readonly" },
ecmaVersion: "latest",
sourceType: "module",
parser: parserVue,
parserOptions: {
parser: eslintTs.parser,
extraFileExtensions: [".vue"],
tsconfigRootDir: appRootPath.path,
},
},
rules: { ...tsConfigRules, "vue/multi-word-component-names": "off" },
};
const eslintConfigVue = [tsConfig, vueConfig];
export default eslintConfigVue;