From 666d41a6abab3212cbb8d8cb5a28115b62562a83 Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Mon, 24 Feb 2025 23:22:46 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20:hammer:=20=E4=BB=A3=E7=A0=81=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 1 + eslint.config.mjs | 126 +++++++++++++++++------------------------- index.html | 12 ++-- package.json | 2 + shims-uni.d.ts | 8 +-- src/uni.scss | 2 +- unocss.config.ts | 3 - 7 files changed, 66 insertions(+), 88 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index eaad2ff..c90f269 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,5 @@ { + "editor.tabSize": 2, "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode", diff --git a/eslint.config.mjs b/eslint.config.mjs index 7486b8d..d952d1e 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,123 +1,99 @@ +// https://eslint.nodejs.cn/docs/latest/use/configure/configuration-files + import globals from "globals"; -import js from "@eslint/js"; +import pluginJs from "@eslint/js"; // JavaScript 规则 +import pluginVue from "eslint-plugin-vue"; // Vue 规则 +import pluginTypeScript from "@typescript-eslint/eslint-plugin"; // TypeScript 规则 -// ESLint 核心插件 -import pluginVue from "eslint-plugin-vue"; -import pluginTypeScript from "@typescript-eslint/eslint-plugin"; +import parserVue from "vue-eslint-parser"; // Vue 解析器 +import parserTypeScript from "@typescript-eslint/parser"; // TypeScript 解析器 -// Prettier 插件及配置 -import configPrettier from "eslint-config-prettier"; -import pluginPrettier from "eslint-plugin-prettier"; +import configPrettier from "eslint-config-prettier"; // 禁用与 Prettier 冲突的规则 +import pluginPrettier from "eslint-plugin-prettier"; // 运行 Prettier 规则 -// 解析器 -import * as parserVue from "vue-eslint-parser"; -import * as parserTypeScript from "@typescript-eslint/parser"; +// 解析自动导入配置 +import fs from "fs"; +const autoImportConfig = JSON.parse(fs.readFileSync(".eslintrc-auto-import.json", "utf-8")); -// 定义 ESLint 配置 +/** @type {import('eslint').Linter.Config[]} */ export default [ - // 通用 JavaScript 配置 + // 指定检查文件和忽略文件 + { + files: ["**/*.{js,mjs,cjs,ts,vue}"], + ignores: ["**/*.d.ts"], + }, + // 全局配置 { - ...js.configs.recommended, - ignores: [ - "/dist", - "/public", - "/node_modules", - "**/*.min.js", - "**/*.config.mjs", - "**/*.tsbuildinfo", - "/src/manifest.json", - ], languageOptions: { globals: { - ...globals.browser, // 浏览器变量 (window, document 等) - ...globals.node, // Node.js 变量 (process, require 等) + ...globals.browser, + ...globals.node, + ...autoImportConfig.globals, + ...{ + PageQuery: "readonly", + PageResult: "readonly", + OptionType: "readonly", + ResponseData: "readonly", + ExcelResult: "readonly", + TagView: "readonly", + AppSettings: "readonly", + __APP_INFO__: "readonly", + }, }, }, - plugins: { - prettier: pluginPrettier, - }, + plugins: { prettier: pluginPrettier }, rules: { - ...configPrettier.rules, - ...pluginPrettier.configs.recommended.rules, - "no-debug": "off", // 禁止 debugger - "prettier/prettier": [ + ...configPrettier.rules, // 关闭与 Prettier 冲突的规则 + ...pluginPrettier.configs.recommended.rules, // 启用 Prettier 规则 + "prettier/prettier": "error", // 强制 Prettier 格式化 + "no-unused-vars": [ "error", { - endOfLine: "auto", // 自动识别换行符 + argsIgnorePattern: "^_", // 忽略参数名以 _ 开头的参数未使用警告 + varsIgnorePattern: "^[A-Z0-9_]+$", // 忽略变量名为大写字母、数字或下划线组合的未使用警告(枚举定义未使用场景) + ignoreRestSiblings: true, // 忽略解构赋值中同级未使用变量的警告 }, ], }, }, + // JavaScript 配置 + pluginJs.configs.recommended, // TypeScript 配置 { - files: ["**/*.?([cm])ts"], + files: ["**/*.ts"], + ignores: ["**/*.d.ts"], // 排除d.ts文件 languageOptions: { parser: parserTypeScript, parserOptions: { sourceType: "module", }, }, - plugins: { - "@typescript-eslint": pluginTypeScript, - }, + plugins: { "@typescript-eslint": pluginTypeScript }, rules: { - ...pluginTypeScript.configs.strict.rules, + ...pluginTypeScript.configs.strict.rules, // TypeScript 严格规则 "@typescript-eslint/no-explicit-any": "off", // 允许使用 any "@typescript-eslint/no-empty-function": "off", // 允许空函数 "@typescript-eslint/no-empty-object-type": "off", // 允许空对象类型 - "@typescript-eslint/consistent-type-imports": [ - "error", - { disallowTypeAnnotations: false, fixStyle: "inline-type-imports" }, - ], // 统一类型导入风格 }, }, - // TypeScript 声明文件的特殊配置 - { - files: ["**/*.d.ts"], - rules: { - "eslint-comments/no-unlimited-disable": "off", - "unused-imports/no-unused-vars": "off", - "@typescript-eslint/ban-ts-comment": "off", // 允许使用 @ts-nocheck 注释 - }, - }, - - // JavaScript (commonjs) 配置 - { - files: ["**/*.?([cm])js"], - rules: { - "@typescript-eslint/no-var-requires": "off", // 允许 require - }, - }, - - // Vue 文件配置 + // Vue 配置 { files: ["**/*.vue"], languageOptions: { parser: parserVue, parserOptions: { - parser: "@typescript-eslint/parser", + parser: parserTypeScript, sourceType: "module", }, }, - plugins: { - vue: pluginVue, - }, + plugins: { vue: pluginVue, "@typescript-eslint": pluginTypeScript }, processor: pluginVue.processors[".vue"], rules: { - ...pluginVue.configs["vue3-recommended"].rules, + ...pluginVue.configs["vue3-recommended"].rules, // Vue 3 推荐规则 "vue/no-v-html": "off", // 允许 v-html - "vue/require-default-prop": "off", // 允许没有默认值的 prop - "vue/multi-word-component-names": "off", // 关闭组件名称多词要求 - "vue/html-self-closing": [ - "error", - { - html: { void: "always", normal: "always", component: "always" }, - svg: "always", - math: "always", - }, - ], // 自闭合标签 + "vue/multi-word-component-names": "off", // 允许单个单词组件名 }, }, ]; diff --git a/index.html b/index.html index f8a54cb..006642b 100644 --- a/index.html +++ b/index.html @@ -1,13 +1,17 @@ - +