2fcd0ed684
npm audit 全量原本报 2 critical + 2 high + 1 moderate,全在开发/测试链上 (vite dev server / vitest / tinypool / @vitest/mocker / source-map-js)。 不能靠"只记例外"糊过去:例外要人批,而这里是能真修的。 升到 vite 7.3.7 + vitest 5.0.3 后 audit 全量 0 命中,191 个前端用例仍全过。 同时锁 prettier 3.9.10 并加 format / format:check 脚本 —— 前端格式从此有门禁。 存量格式债(79 个文件,多为刻意压行的紧凑写法)记入 .prettier-baseline.json: 列明、只能减、2026-12-31 到期,新欠账一律判红(见 scripts/check_format.py)。 为什么不做全量格式化:一次性重排约 2 万行,会把"接入 CI"变成"重写前端"; 那件事留作独立提交,由人决定何时做。 验证:前端 191 个用例全过、tsc 类型检查通过、vite 构建通过、npm audit 全量 0; prettier --list-different 的输出与基线完全一致。
97 lines
3.6 KiB
JSON
97 lines
3.6 KiB
JSON
{
|
||
"_doc": [
|
||
"前端格式债**基线**(只能减、不能增)。检查在 scripts/check_format.py,CI 会跑它。",
|
||
"这里列的是本仓**接入格式化门禁之前**就已经不符合 prettier 的文件;它们是一次性账面债,",
|
||
"不是「永远忽略 web/ 目录」—— 新出现的未格式化文件一律判红,这个清单本身的长短也被断言。",
|
||
"规则:",
|
||
" 1. prettier --list-different 的输出里,任何**不在**本清单里的文件 ⇒ 门禁红。",
|
||
" 2. 似乎已格式化(不再出现在输出里)的条目 ⇒ 提示可以删掉这条(不判红,避免误伤)。",
|
||
" 3. 到期日 review_by 之后 ⇒ 门禁红:要么 `npm --prefix web run format` 一次清干净,",
|
||
" 要么由人重新批准并更新 review_by。基线不许无声续命。",
|
||
"为什么不全量格式化:这份代码里有一部分是刻意压行的紧凑写法(一个组件一行),",
|
||
"一次性重排约 2 万行 —— 那会把「接入 CI」变成「重写整个前端」。留作独立提交,由人决定何时做。"
|
||
],
|
||
"review_by": "2026-12-31",
|
||
"unformatted": [
|
||
"src/App.test.tsx",
|
||
"src/App.tsx",
|
||
"src/BackupScheduleSection.test.tsx",
|
||
"src/BackupScheduleSection.tsx",
|
||
"src/DingtalkSessionControl.test.tsx",
|
||
"src/DingtalkSessionControl.tsx",
|
||
"src/DingtalkSourceDiscovery.test.tsx",
|
||
"src/DingtalkSourceDiscovery.tsx",
|
||
"src/DocumentWorkbench.test.tsx",
|
||
"src/DocumentWorkbench.tsx",
|
||
"src/FilenameFilterEditor.test.tsx",
|
||
"src/FilenameFilterEditor.tsx",
|
||
"src/MembersSection.tsx",
|
||
"src/PasswordInput.test.tsx",
|
||
"src/ProductionBindingsSection.tsx",
|
||
"src/ReleasePlanner.test.tsx",
|
||
"src/ReleasePlanner.tsx",
|
||
"src/RoutingBindingsSection.tsx",
|
||
"src/ScopeRuleEditor.test.tsx",
|
||
"src/ScopeRuleEditor.tsx",
|
||
"src/SnapshotHistory.test.tsx",
|
||
"src/SnapshotHistory.tsx",
|
||
"src/SourceCatalogBrowser.test.tsx",
|
||
"src/SourceCatalogBrowser.tsx",
|
||
"src/SourceLinkManager.test.tsx",
|
||
"src/SourceLinkManager.tsx",
|
||
"src/SystemSettings.test.tsx",
|
||
"src/SystemSettings.tsx",
|
||
"src/WeKnoraMonitor.test.tsx",
|
||
"src/WeKnoraMonitor.tsx",
|
||
"src/assets.test.ts",
|
||
"src/assets.ts",
|
||
"src/auth.tsx",
|
||
"src/authMembers.test.ts",
|
||
"src/backupSchedule.test.ts",
|
||
"src/backupSchedule.ts",
|
||
"src/dingtalkSession.test.ts",
|
||
"src/dingtalkSession.ts",
|
||
"src/dingtalkSources.test.ts",
|
||
"src/dingtalkSources.ts",
|
||
"src/documentFixture.ts",
|
||
"src/documentWorkbench.css",
|
||
"src/documentWorkbench.test.ts",
|
||
"src/documentWorkbench.ts",
|
||
"src/filenameFilters.ts",
|
||
"src/main.tsx",
|
||
"src/members.ts",
|
||
"src/monitor.test.ts",
|
||
"src/monitor.ts",
|
||
"src/operationKey.test.ts",
|
||
"src/operationKey.ts",
|
||
"src/productionBindings.test.ts",
|
||
"src/productionBindings.ts",
|
||
"src/releasePlanner.css",
|
||
"src/releasePlanner.test.ts",
|
||
"src/releasePlanner.ts",
|
||
"src/reviewRelease.test.ts",
|
||
"src/reviewRelease.ts",
|
||
"src/routingBindings.test.ts",
|
||
"src/routingBindings.ts",
|
||
"src/scopeRules.test.ts",
|
||
"src/scopeRules.ts",
|
||
"src/sourceCatalog.test.ts",
|
||
"src/sourceCatalog.ts",
|
||
"src/sourceCatalogBrowser.css",
|
||
"src/sourceConnections.test.ts",
|
||
"src/sourceConnections.ts",
|
||
"src/sourceLinkManager.css",
|
||
"src/styles.css",
|
||
"src/systemSettings.css",
|
||
"src/testPublications.test.ts",
|
||
"src/testPublications.ts",
|
||
"src/uiSettings.test.ts",
|
||
"src/uiSettings.ts",
|
||
"src/weknoraMonitor.css",
|
||
"src/workspace.test.ts",
|
||
"src/workspace.ts",
|
||
"src/workspaceContext.test.tsx",
|
||
"src/workspaceContext.tsx"
|
||
]
|
||
}
|