Skip to content

chore(frontend): 消融 4 个必红且零消费者的 format 门禁——app 的 prettier --check 实测 870/1137 个被跟踪 ts/tsx 不合规、desktop 79 个,CI/Makefile/scripts/verify 从不调用;删脚本 + 2 处随之零消费者的 prettier devDep(lockfile 同步,frozen-lockfile rc=0),.prettierrc 保留给编辑器 - #2287

Merged
DeliciousBuding merged 1 commit into
masterfrom
chore/dead-format-gate
Sep 3, 2026

Conversation

@DeliciousBuding

Copy link
Copy Markdown
Collaborator

做了什么

删掉 4 个结构上不可能变红也没人看的 format 脚本,以及随之零消费者的 prettier devDep:

文件 删除
app/package.json "format": "prettier --check .""format:fix": "prettier --write ."、devDep prettier@^3.8.3
app/desktop/package.json "format": "prettier --check src""format:fix": "prettier --write src"、devDep prettier@^3.8.3
app/pnpm-lock.yaml 同步(2 个 importer 块;prettier@3.8.3 在 snapshots 里保留为 optional: true,因为仍有传递性 optional peer 声明它)

6 行删除 + lockfile 9 行变化,0 行 TS/源码/测试改动

为什么这是死门禁而不是待修的门禁

实测(主机在 master = dfbe476e 上跑)

$ cd app && git ls-files '*.ts' '*.tsx' | wc -l                     → 1137
$ git ls-files -z '*.ts' '*.tsx' | xargs -0 npx prettier --check    → 870 个文件不合规(76%)
$ cd app/desktop && npx prettier --check src                        → rc=1,79 个文件不合规
$ cd app && npx prettier --check .                                  → 1384 warn(含 desktop/dist/** 的构建产物:仓库没有 .prettierignore,脚本连未跟踪的 dist 都扫)

零消费者

$ grep -rn prettier .github/workflows/checks.yml Makefile scripts/verify/*.py   → 0 命中
$ grep -n "^fe-" Makefile → fe-install / fe-dev / fe-build / fe-test / fe-coverage-baseline / fe-lint / fe-typecheck(没有 format)
$ grep -n prettier app/eslint.config.mjs                                        → 0 命中(不是 eslint 插件,删依赖不影响 lint)
$ git grep -n "pnpm format\|pnpm run format"                                    → 0 命中

即:这个检查在仓库里从来不会执行,而一旦执行必然红。round-69 的 #2278 处理的是同一类东西(「结构上不可能变红」的 lint step)——那边能翻成真门禁是因为只差 6 个 no-explicit-any;这里差 870 个文件,翻成真门禁等于一次全仓重排版。

为什么不用「排版修好它」:对 870 个文件跑 prettier --write 会产生一个远大于全部产品代码的 diff、抹掉这些行的 blame,并且把「本仓前端风格」这个设计决定伪装成一次清理。要不要真的采纳 prettier 当门禁(并配套 .prettierignore + 一次性重排版 + CI step)属 operator 决策,已记入本轮报告,不在本 PR 里偷偷做。

为什么保留两份 .prettierrc

/.prettierrcapp/desktop/.prettierrc 的消费者是编辑器(VS Code 的 prettier 扩展自带 prettier,读仓库配置),不是仓库门禁。删掉它们的后果是具体的:format-on-save 的人会静默切到 prettier 默认(双引号 / 80 列),与现有树更不一致。所以本 PR 只拆掉「假门禁」,不动「真约定」。

证据

$ git diff --name-only origin/master...HEAD → app/desktop/package.json, app/package.json, app/pnpm-lock.yaml
$ git diff --name-only origin/master...HEAD | grep -vE 'package\.json$|pnpm-lock\.yaml$' → 空
$ cd app && pnpm install --lockfile-only                     → rc=0(Done in 20.4s, pnpm v10.32.1)
$ cd app && pnpm install --frozen-lockfile --lockfile-only   → rc=0(Scope: all 6 workspace projects)= CI 的 frozen 安装口径,lockfile 与 package.json 一致
$ git diff --check origin/master...HEAD                      → rc=0
$ bash scripts/verify/verify-commit-messages.sh master HEAD  → rc=0
$ bash scripts/verify/check-secrets.sh --range origin/master...HEAD → Secret guard passed

诚实边界:worktree 的 app/*/node_modules 是指向主 checkout 的 symlink,没有在本机跑真安装(那会在会话中途改共享树、影响其它 worktree 与在跑的 dev-web),所以「prettier 从 node_modules 消失后一切照旧」这一条由 CI 的 fresh pnpm install --frozen-lockfile + 前端全量 job 兜底,本机只证到 lockfile 一致性与零引用。

Negative constraints

  • 没改任何 .ts/.tsx/.css、没重排版任何文件、没加 .prettierignore(加了也只是让一个仍会红的检查红得少一点)。
  • 没动 lint/typecheck/test/coverage 任何一条真门禁,也没动 scripts/verify/quality-debt-baseline.json(本 PR 不涉及 continue-on-error 变化)。
  • 产品代码里的 prettier 字面量(chatview 工具标签、i18n 文案、demo 夹具)与本 PR 无关,未触碰。

… 870/1137 个被跟踪 ts/tsx 不合规、desktop 的 79 个不合规,而 CI/Makefile/scripts/verify 零调用(只有 lint/typecheck/test/coverage 是门禁),删掉 app 与 desktop 各自的 format/format:fix 脚本连同 2 处随之零消费者的 prettier devDep(lockfile 同步,frozen-lockfile 一致性 rc=0);.prettierrc 两份保留——它们的消费者是编辑器而非门禁

Co-authored-by: Cursor <cursor@vectorcontrol.tech>
@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Team

Run ID: 56a8d4ea-328b-4a43-bafe-bbc926ea4bd5

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant