build(web): vite 7.3.7 + vitest 5.0.3 清依赖漏洞,并加入 prettier

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 的输出与基线完全一致。
This commit is contained in:
姚章浩
2026-10-12 00:10:31 +08:00
parent c04abd6530
commit 2fcd0ed684
5 changed files with 340 additions and 438 deletions
+96
View File
@@ -0,0 +1,96 @@
{
"_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"
]
}
+4
View File
@@ -0,0 +1,4 @@
node_modules/
dist/
*.tsbuildinfo
package-lock.json
+7
View File
@@ -0,0 +1,7 @@
{
"printWidth": 120,
"singleQuote": true,
"semi": false,
"trailingComma": "es5",
"endOfLine": "lf"
}
+227 -435
View File
File diff suppressed because it is too large Load Diff
+6 -3
View File
@@ -7,7 +7,9 @@
"dev": "vite --host 0.0.0.0",
"test": "vitest run",
"build": "tsc -b && vite build",
"typecheck": "tsc -b --pretty false"
"typecheck": "tsc -b --pretty false",
"format": "prettier --write .",
"format:check": "prettier --check ."
},
"dependencies": {
"react": "19.1.1",
@@ -17,8 +19,9 @@
"@types/react": "19.1.10",
"@types/react-dom": "19.1.7",
"@vitejs/plugin-react": "5.0.1",
"prettier": "3.9.10",
"typescript": "5.9.2",
"vite": "7.1.3",
"vitest": "3.2.4"
"vite": "7.3.7",
"vitest": "5.0.3"
}
}