参考手册

编码规范

TypeScript、Git、测试、文档和协作流程的统一约定

本页是项目开发规范的统一入口。架构边界请结合 项目结构Monorepo 架构指南包开发规范 一起阅读。

TypeScript 和 JavaScript 约定

  • 启用 TypeScript strict mode
  • 默认优先 interface,联合类型、映射类型等场景再使用 type
  • 避免使用 enum,改用 as const 对象
  • 保持函数签名明确,避免 any

命名规范

类型风格示例
变量 / 函数camelCasegetUserName, isActive
组件 / 类型PascalCaseUserProfile, EventCard
常量UPPER_SNAKE_CASEMAX_RETRY_COUNT
文件名kebab-caseuser-profile.tsx, event-card.ts

代码放置规则

  • 应用特定代码放在 apps/01mvp-web/src/lib/
  • 可复用领域逻辑放在 packages/
  • 纯 shadcn/ui 原子组件只能放在 packages/ui
  • 跨项目共享业务组件放在 packages/ui-shared

样式规范

class 组织顺序:布局 -> 间距 -> 颜色 -> 边框 -> 效果

设计系统约束:

  • 不要硬编码颜色,统一使用语义化 token
  • 间距遵循 4px 基准
  • 焦点状态统一使用 ring-2 ring-ring
  • 详细视觉规范见 UI 设计规范

Git Commit 规范

使用 Conventional Commitstype(scope): description

type说明
feat新功能
fixBug 修复
docs文档更新
style仅样式或格式调整
refactor重构
perf性能优化
test测试相关
chore构建、工具或杂项维护

常见 scope:authdbuiapii18npaymentconfig

git commit -m "feat(auth): add WeChat login support"
git commit -m "fix(db): resolve connection pool timeout"

分支策略

项目采用主干开发(Trunk-Based Development),所有改动直接在 main 分支上进行。短期功能分支完成后及时合并回 main

Pull Request 和代码审查

PR 至少说明变更目标、影响范围和测试方式。审查重点:功能逻辑、边界条件、package 边界、性能安全。

合并要求:CI 自动检查通过,无冲突、无回归风险。

测试规范

  • 单元测试:核心业务逻辑
  • 集成测试:API、数据库、第三方服务协作
  • E2E 测试:关键用户流程,使用 Playwright

常用命令:

pnpm lint
pnpm lint:fix
pnpm format
pnpm type-check:packages
pnpm test:packages

文档规范

  • packages/*/README.md:技术参考和 API 细节
  • apps/01mvp-web/content/docs/:Fumadocs 文档中心
  • openspec/:复杂功能的提案、设计和任务清单

提交前检查清单

  • 代码通过 pnpm lint
  • 相关构建可以成功完成
  • UI 变更符合设计系统约束
  • 文档和注释已同步更新