4.7 KiB
4.7 KiB
贡献指南
感谢你对 @r-utils 项目的关注!本文档将帮助你了解如何参与项目贡献。
开发环境要求
- Node.js >= 18.12.0
- pnpm >= 10.0.0
快速开始
1. Fork 并克隆仓库
# 克隆你 fork 的仓库
git clone https://gitee.com/your-username/r-util-js.git
cd r-util-js
# 安装依赖
pnpm install
2. 创建分支
# 从 master 分支创建新分支
git checkout -b feat/your-feature-name
# 或
git checkout -b fix/your-bug-fix
分支命名规范:
feat/xxx- 新功能fix/xxx- Bug 修复docs/xxx- 文档更新refactor/xxx- 代码重构test/xxx- 测试相关chore/xxx- 构建/工具相关
3. 开发与测试
# 构建所有包(Turbo)
pnpm build
# 运行测试
pnpm test
# 代码检查
pnpm lint
# 代码格式化
pnpm format
4. 提交代码
本项目使用 Conventional Commits 规范,并通过 commitizen + cz-git 提供交互式提交体验。
使用交互式提交(推荐)
# 暂存你的更改
git add .
# 使用交互式提交
pnpm commit
交互式提交会引导你完成以下步骤:
- 选择提交类型 - feat/fix/docs 等
- 输入影响范围 - 可选,如 common/vue3/uni-app
- 输入简短描述 - 必填,简明扼要说明改动
- 输入详细描述 - 可选,提供更多上下文
- 是否有破坏性变更 - 如果有,需要详细说明
- 关联 Issue - 可选,如
fix #123
手动提交
如果你熟悉规范,也可以手动提交:
git commit -m "feat(common): 添加新的工具函数"
git commit -m "fix(vue3): 修复 mergeClass 类型错误"
git commit -m "docs: 更新 README 文档"
提交信息格式
<type>(<scope>): <subject>
<body>
<footer>
Type 类型:
feat✨ - 新功能fix🐛 - Bug 修复docs📚 - 文档更新style💎 - 代码格式(不影响代码逻辑)refactor📦 - 重构(既不是新功能也不是修复)perf🚀 - 性能优化test🚨 - 测试相关build🛠 - 构建系统或依赖更新ci⚙️ - CI 配置更新chore♻️ - 其他杂项(构建流程、依赖管理等)revert🗑 - 回滚之前的提交
Scope 范围(可选):
common- @r-utils/common 包vue3- @r-utils/vue3 包vue2- @r-utils/vue2 包uni-app- @r-utils/uni-app 包- 或具体的文件/模块名
Subject 主题:
- 简短描述(建议 50 字符以内)
- 使用祈使句,如"添加"而不是"添加了"
- 首字母小写
- 结尾不加句号
示例:
# 好的提交信息
feat(common): 添加 debounce 防抖函数
fix(uni-app): 修复蓝牙连接超时问题
docs: 更新安装说明
refactor(vue3): 优化 mergeClass 实现逻辑
# 不好的提交信息
update code
fix bug
修改了一些文件
5. 推送并创建 Pull Request
# 推送到你的 fork 仓库
git push origin feat/your-feature-name
然后在 Gitee 上创建 Pull Request,请参考 PR 模板填写相关信息。
Git Hooks
项目配置了以下 Git Hooks(通过 husky):
- pre-commit - 运行
lint-staged检查代码格式和 lint - commit-msg - 使用
commitlint校验提交信息格式
如果提交被拒绝,请检查:
- 代码是否通过 ESLint 检查
- 提交信息是否符合规范
- 测试是否全部通过
代码规范
JavaScript/TypeScript
- 使用 ESLint + Prettier 进行代码检查和格式化
- 遵循项目的
eslint.config.js(ESLint Flat Config) - 提交前运行
pnpm lint和pnpm format
测试
- 为新功能编写单元测试
- 确保所有测试通过:
pnpm test - 测试文件放在各包的
test/目录下 - 使用 Vitest 作为测试框架
文档
- 为新功能添加 JSDoc 注释
- 更新相关的 README 文档
- 如果是重大变更,更新 CHANGELOG
Monorepo 结构
r-util-js/
├── packages/
│ ├── common/ # 通用工具库
│ ├── vue3/ # Vue3 工具
│ ├── vue2/ # Vue2 工具
│ └── uni-app/ # uni-app 工具
└── docs/ # 文档
发布流程
发布由维护者负责,详细流程请查看 发布流程文档。
常用命令:
pnpm changeset
pnpm release:check
pnpm release
pnpm release:publish
需要帮助?
- 查看 README.md 了解项目概况
- 查看 CLAUDE.md 了解项目架构
- 在 Issues 提问或报告 Bug
- 联系维护者: randy1924@163.com
行为准则
- 尊重所有贡献者
- 提供建设性的反馈
- 专注于对项目最有利的事情
- 保持友好和专业的态度
感谢你的贡献! 🎉