From 811ad11f9f0880a37cd856efac3ea6d409993b31 Mon Sep 17 00:00:00 2001 From: SpecialX <47072643+wangxiner55@users.noreply.github.com> Date: Tue, 7 Jul 2026 12:39:21 +0800 Subject: [PATCH] feat(logging): enable ESLint no-console rule with client exemptions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 全局启用 no-console: error 规则,强制服务端 .ts 文件使用 createModuleLogger。豁免场景: scripts/(脚本)、tests/(测试)、src/**/*.tsx(客户端组件,留待 Task 12-14 处理)、src/**/hooks/**/*.ts(客户端 hooks)、src/**/components/**/*.ts(客户端 utils)、src/shared/lib/query-client.ts(被客户端导入)。将 deletes/ 归档目录加入 globalIgnores。 --- eslint.config.mjs | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/eslint.config.mjs b/eslint.config.mjs index 02cbe86..1790035 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -30,6 +30,9 @@ const eslintConfig = defineConfig([ "禁止硬编码 hex 颜色,使用设计令牌 hsl(var(--*)) 或 Tailwind 类 bg-*", }, ], + // 禁止 console.* 调用,统一使用 createModuleLogger("module-name") + // 豁免场景:scripts/、tests/、客户端 .tsx(留待客户端错误上报机制处理)、被客户端导入的 .ts + "no-console": "error", }, }, { @@ -89,6 +92,43 @@ const eslintConfig = defineConfig([ "no-restricted-syntax": "off", }, }, + // 豁免:scripts/ 和 tests/ 允许 console(脚本/测试场景不接入 logger) + { + files: ["scripts/**/*.{js,mjs,ts}", "tests/**/*.{ts,tsx,js}"], + rules: { + "no-console": "off", + }, + }, + // 暂时豁免:客户端 .tsx 文件中的 console 调用,留待客户端错误上报机制(Task 12-14)处理 + // 客户端组件不能导入服务端 pino logger,需通过 useErrorReport Hook 上报 + { + files: ["src/**/*.tsx"], + rules: { + "no-console": "off", + }, + }, + // 豁免:客户端 hooks(.ts)被客户端组件导入,不能使用服务端 logger + // 留待 Task 12-14 客户端错误上报机制处理 + { + files: ["src/**/hooks/**/*.ts"], + rules: { + "no-console": "off", + }, + }, + // 豁免:components 目录中的 .ts utils(如 exam-preview-utils.ts)被客户端 hooks 导入 + { + files: ["src/**/components/**/*.ts"], + rules: { + "no-console": "off", + }, + }, + // 豁免:被客户端组件导入的 .ts 文件不能使用服务端 logger(如 query-client.ts 被 providers.tsx 导入) + { + files: ["src/shared/lib/query-client.ts"], + rules: { + "no-console": "off", + }, + }, // Override default ignores of eslint-config-next. globalIgnores([ // Default ignores of eslint-config-next: @@ -103,6 +143,8 @@ const eslintConfig = defineConfig([ "tests/webapp/debug_drizzle.js", // Migration/maintenance scripts using CommonJS require() "scripts/**/*.js", + // 已删除文件的归档目录,不参与 lint + "deletes/**", ]), ]);