感谢参与本项目!请遵循以下规范,保证协作顺畅。
- Node.js 22
- pnpm(可用
corepack enable开启,版本见package.json的packageManager字段)
pnpm install # 安装依赖
pnpm dev # 本地开发(http://localhost:3000)
pnpm lint # ESLint 检查
pnpm build # 类型检查 + 生产构建
pnpm preview # 本地预览构建产物main为主干分支,始终保持可构建、可发布状态- 功能开发从
main切出工作分支,命名格式:
| 前缀 | 用途 | 示例 |
|---|---|---|
feat/ |
新功能 | feat/dark-mode |
fix/ |
Bug 修复 | fix/navbar-overlap |
docs/ |
文档变更 | docs/update-readme |
refactor/ |
重构 | refactor/hooks |
chore/ |
构建、依赖、工具链 | chore/bump-deps |
- 分支名使用小写英文 + 连字符,简短描述变更内容
提交信息遵循 Conventional Commits:
<type>(<scope>): <subject>
type:feat/fix/docs/style/refactor/perf/test/chore/ciscope:可选,影响的模块,如navbar、hookssubject:简短描述,祈使句,结尾不加句号
示例:
feat(navbar): 添加移动端折叠菜单
fix: 修复深色模式下图标颜色错误
chore: 升级 vite 到 7.x
一次提交只做一件事,保持提交原子化。
- Fork / 从
main切出工作分支 - 开发并提交,确保
pnpm lint与pnpm build本地通过 - 推送分支并创建 Pull Request,填写 PR 模板中的所有小节
- CI(lint + build)必须通过才能合并
- 至少一名维护者 Review 通过后,使用 Squash and merge 合并
- 合并后删除工作分支
- 一个 PR 只解决一件事,避免大而杂的变更
- 标题遵循提交规范,如
feat: 添加搜索功能 - 界面变更必须附截图或录屏
- 不要夹带与主题无关的重构 / 格式化
- 使用 TypeScript,禁止新增
any(确有必要时在 PR 中说明) - 组件、hooks、工具函数放在
src/components/src/hooks/src/lib - 路径别名
@/指向src/,优先使用别名而非深层相对路径 - 样式使用 Tailwind CSS,UI 组件基于 shadcn(
src/components/ui) - 不使用
React.StrictMode(会导致 GSAP/动画 effect 双跑,见src/main.tsx)