代码格式
Prettier、ESLint、文件 Header、pre-commit 与全仓验证命令。
仓库只有一套格式与静态检查入口:Prettier 负责确定性排版,ESLint 负责语义和仓库边界,TypeScript 负责类型。不要在 workspace 内新增第二套 formatter。
常用命令
pnpm format
pnpm format:check
pnpm lint
pnpm lint:fix
pnpm typecheck
pnpm verifypnpm verify 依次执行 format check、lint、全部 workspace 类型检查与测试,以及三个应用 build。局部开发时可以运行目标 workspace 命令,提交前仍以全仓结果为准。
配置来源
- 根
package.json使用@arvinn/prettier-config。 eslint.config.ts基于@arvinn/eslint-config,集中声明 workspace TypeScript root、生成物忽略与局部规则。- Web 的
no-restricted-imports禁止lucide-react,提示转换到 Solar/Carbon Iconify。 - apps 的 TypeScript 源码启用确定性 object key 排序门禁。
apps/docs/content/docs/**/*.mdx 不由 Prettier 自动改写,以保留合法 MDX Header 与手工内容结构;它们仍必须通过 Fumadocs generate 和 TypeScript/build 编译。
提交钩子
simple-git-hooks 调用 scripts/run-lint-staged.sh。脚本不校验 Node 版本,直接从 PATH、Homebrew 或 NVM 安装中选择可用 Node,再运行仓库本地 lint-staged,因此 VS Code Git GUI 不依赖全局 pnpm。
pre-commit 只处理暂存文件,不能替代全量 pnpm verify。
文档与注释
可注释文件必须维护 INPUT / OUTPUT / POS / PROTOCOL Header;文件职责或成员变化后同步所属 .folder.md。严格 JSON 不能写注释,其契约放在目录地图中。