import js from "@eslint/js"; import globals from "globals"; import tseslint from "typescript-eslint"; import pluginVue from "eslint-plugin-vue"; import { defineConfig } from "eslint/config"; import stylistic from "@stylistic/eslint-plugin"; export default defineConfig([ { name: "通用设置", files: ["**/*.{js,mjs,cjs,ts,mts,cts,vue}",], plugins: { js, }, extends: ["js/recommended",], languageOptions: { globals: { ...globals.browser, ...globals.node, }, }, rules:{ // indent: ["warn", 4,], // 圆括号中的空格,为空不加空格,紧跟花括号、方括号、圆括号时也不加入空格 "space-in-parens": ["error", "always", { exceptions: ["{}", "[]", "()", "empty",], },], "no-console": process.env.NODE_ENV === "production" ? "warn" : "off", "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off", "no-unused-vars": "warn", semi: ["error", "always",], // 控制行尾部分号 quotes: ["error", "double",], "comma-dangle": ["error", { arrays: "always", objects: "always", imports: "never", exports: "never", functions: "never", },], // 数组和对象键值对最后一个逗号 "comma-style": ["error", "last",], // 逗号在行尾 "no-undef-init": "error", "no-invalid-this": "error", "no-use-before-define": "error", "no-shadow-restricted-names": "error", // 禁止对一些关键字或者保留字进行赋值操作,比如NaN、Infinity、undefined、eval、arguments等 "comma-spacing": ["error", { before: false, after: true, },], "array-bracket-spacing": ["error", "never", { singleValue: false, objectsInArrays: false, arraysInArrays: false, },], "brace-style": ["error", "allman", { allowSingleLine: true, },], "prefer-const": "warn", "space-before-function-paren": ["error", { anonymous: "always", named: "never", asyncArrow: "always", },], "@stylistic/no-trailing-spaces": [ // 不允许末尾的空格 "error", { "skipBlankLines": false, "ignoreComments": false, }, ], }, }, tseslint.configs.recommended, { files: ["src/**/*.ts", "eslint.config.ts",], plugins: { "@stylistic": stylistic, }, languageOptions: { parserOptions: { parser: tseslint.parser, }, }, rules: { "spaced-comment": "error", "space-before-function-paren": "off", "semi-spacing": ["error", { before: false, after: true, },], "@typescript-eslint/no-unused-vars": "warn", "@stylistic/indent": ["error", 4, { SwitchCase: 1, },], "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-extra-semi": "off", "@typescript-eslint/no-inferrable-types": "off", "@typescript-eslint/ban-ts-comment": "warn", "@typescript-eslint/member-delimiter-style": "off", "@stylistic/semi": ["error", "always",], // 控制行尾部分号 "@stylistic/brace-style": ["error", "allman", { allowSingleLine: true, },], "@stylistic/comma-dangle": [ "error", { arrays: "always", objects: "always", imports: "never", exports: "never", functions: "never", }, ], // 数组和对象键值对最后一个逗号 "@stylistic/quotes": ["error", "double",], "@typescript-eslint/space-before-function-paren": "off", "@typescript-eslint/comma-spacing": [ "off", { before: false, after: true, }, ], // 使用eslint的,不用ts的 // "@typescript-eslint/strict-boolean-expressions": ["error", { // allowString: false, // },], "@stylistic/object-property-newline": "warn", }, }, pluginVue.configs["flat/essential"], pluginVue.configs["flat/strongly-recommended"], { files: ["**/*.vue", "**/.ts", "eslint.config.ts",], plugins: { "@stylistic": stylistic, }, languageOptions: { parserOptions: { parser: tseslint.parser, }, ecmaVersion: "latest", sourceType: "module", globals: globals.browser, }, rules: { "vue/html-indent": ["error", 4,], // "vue/max-attributes-per-line": ["error", { // "singleline": { // "max": 1, // }, // "multiline": { // "max": 1, // }, // },], "spaced-comment": "error", "space-before-function-paren": "off", "semi-spacing": ["error", { before: false, after: true, },], "@typescript-eslint/no-unused-vars": "warn", "@stylistic/indent": ["error", 4, { SwitchCase: 1, },], "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-extra-semi": "off", "@typescript-eslint/no-inferrable-types": "off", "@typescript-eslint/ban-ts-comment": "warn", "@typescript-eslint/member-delimiter-style": "off", "@stylistic/semi": ["error", "always",], // 控制行尾部分号 "@stylistic/brace-style": ["error", "allman", { allowSingleLine: true, },], "@stylistic/comma-dangle": [ "error", { arrays: "always", objects: "always", imports: "never", exports: "never", functions: "never", }, ], // 数组和对象键值对最后一个逗号 "@stylistic/quotes": ["error", "double",], "@typescript-eslint/space-before-function-paren": "off", "@typescript-eslint/comma-spacing": [ "off", { before: false, after: true, }, ], // 使用eslint的,不用ts的 // "@typescript-eslint/strict-boolean-expressions": ["error", { // allowString: false, // },], "@stylistic/object-property-newline": "warn", }, }, ]);